2012-01-06 14 views
13

पर अलग-अलग प्रदर्शित होता है, मैं अपने आवेदन में स्टेटस बार में किसी कार्य के विलुप्त समय को प्रदर्शित करने के लिए निम्न कोड का उपयोग कर रहा हूं।स्टेटसस्ट्रिप लेबल में स्ट्रिंग.फॉर्मैट() मान विन 7 बनाम विन XP

public void DisplayDuration(TimeSpan duration) 
{ 
    string formattedDuration; 

    if (duration.TotalMilliseconds < 2000) 
     formattedDuration = string.Format("{0} ms", duration.TotalMilliseconds); 
    else if (duration.TotalSeconds < 60) 
     formattedDuration = string.Format("{0} sec", duration.TotalSeconds); 
    else 
     formattedDuration = string.Format("{0} min", duration.TotalMinutes); 

    this.TimingLabel.Text = formattedDuration; 
} 

यह.TimingLabel स्थिति में एक लेबल है Winform के पाद लेख में नियंत्रण नियंत्रण।

लेकिन मैं बनाम विंडोज 7

Windows XP Windows XP पर पूरी तरह से अलग परिणाम प्राप्त: elapsed Time formatted XP

विंडोज 7 elapsed Time formatted 7

विंडोज 7 में समय से पहले प्रदर्शित होने इकाइयों क्यों है?

मैंने क्षेत्रीय सेटिंग्स की जांच की है दोनों मशीनें उसी दिनांक समय स्वरूपण के साथ यूएस पर सेट की गई हैं। काफी यकीन है कि यह दोनों मशीनों पर चल रहा एक ही कोड है। यह कुछ बहुत ही सरल कोड में बहुत अजीब व्यवहार है।

के रूप में एक अनुवर्ती: मैं अपने कोड के लिए निम्न परिवर्तन किया है लेकिन अभी भी एक ही समस्या है:

formattedDuration = string.Format("{0} ms", duration.TotalMilliseconds.ToString()); 
+0

क्या आप पूरी तरह से सुनिश्चित हैं कि दोनों ऑपरेटिंग सिस्टम पर एक ही कोड चल रहा है? – FishBasketGordo

+0

प्रत्येक सिस्टम के लिए "दशमलव के बाद अंकों की संख्या" के लिए "संख्याएं" सेट के लिए अतिरिक्त सेटिंग्स क्या हैं? – Oded

+0

मैं यहां एक अंग पर बाहर जाने जा रहा हूं और अनुमान लगाता हूं कि आप हमें 'टाइमिंग लेबल' में टेक्स्ट निर्दिष्ट करने में शामिल सभी कोड नहीं दिखा रहे हैं। – Jamiec

उत्तर

7

मुझे लगता है कि संभवत: यहां होने की संभावना एक लेआउट समस्या है, न String.Format है। क्षेत्रीय सेटिंग्स यहां एक कारक नहीं होनी चाहिए क्योंकि आप इसके मूल्य को प्रारूपित करने के लिए TimeSpan नहीं पूछ रहे हैं। इसके बजाय आप एक संख्या के बाद एक स्ट्रिंग "एमएस" प्रारूपित करने के लिए String पूछ रहे हैं। अगर यह आउटपुट में उलटा हुआ तो यह बस एक बग होगा।

क्या अधिक संभावना है कि संख्या कंटेनर की लेआउट बाधाओं में एक बग के माध्यम से क्लिप की जा रही है। यदि मैं स्क्रीन शॉट पर बहुत मेहनत करता हूं तो ms स्ट्रिंग के बाईं ओर तुरंत विभाजक दिखाई देता है।

सबकुछ एक निश्चित चौड़ाई देने का प्रयास करें जो काफी बड़ा है और देखें कि सही प्रदर्शन वापस आता है या नहीं।

+0

अच्छा सुझाव। –

+1

यह एक लेआउट त्रुटि है। जब मैं लेबल को चौड़ाई तय करता हूं, तो मान सही ढंग से स्वरूपित होता है। –

+0

@ गैरी: क्या आपके प्रश्न के शीर्षक को संपादित करना अच्छा नहीं होगा? – GaussZ

0

वास्तविक उत्तर स्थिति में लेबल था जिसका राइट टॉफ़्ट गलत तरीके से सेट किया गया था। इस संपत्ति को विंडोज एक्सपी द्वारा सम्मानित नहीं किया गया था लेकिन विंडोज 7+ का उपयोग किया जाता है।