2011-01-12 15 views
29

मेरे पास Panel है जो मैं प्रोग्रामेटिक रूप से बना रहा हूं; इसके अतिरिक्त मैं इसमें कई घटक जोड़ रहा हूं।लेबल की ऊंचाई को ऑटोसाइज़ कैसे करें लेकिन चौड़ाई

इन घटकों में से एक Label है जिसमें उपयोगकर्ता द्वारा जेनरेट की गई सामग्री होगी।

मुझे नहीं पता कि लेबल कितना लंबा होना चाहिए, लेकिन इसकी एक निश्चित चौड़ाई है।

मैं ऊंचाई कैसे सेट कर सकता हूं ताकि यह चौड़ाई को बदलने के बिना सभी पाठ प्रदर्शित कर सके?

उत्तर

60

बस AutoSize संपत्ति का उपयोग करें, इसे True पर सेट करें।

MaximumSize संपत्ति को (60, 0) पर सेट करें, इसलिए यह क्षैतिज रूप से लंबवत नहीं हो सकता है, केवल लंबवत।

+0

+1। मेरे सुझाव से बहुत आसान है। – Brian

+0

सादगी के कारण उत्तर के रूप में चुना गया, ब्रायन का जवाब भी पूरी तरह से अच्छा है, लेकिन यह समझना और बनाए रखना आसान है। – Malfist

+0

अगर मुझे तरल चौड़ाई की आवश्यकता है तो क्या होगा? – Robin

5

उपयोग Graphics.MeasureString:

public SizeF MeasureString(
    string text, 
    Font font, 
    int width 
) 

चौड़ाई पैरामीटर चौड़ाई घटक लौटे SizeF संरचना (चौड़ाई) के की अधिकतम मूल्य निर्दिष्ट करता है। यदि चौड़ाई पैरामीटर स्ट्रिंग की वास्तविक चौड़ाई से कम है, तो लौटा चौड़ाई घटक का प्रतिनिधित्व करने वाले मान को छोटा कर दिया गया है जो निर्दिष्ट चौड़ाई के भीतर फिट होगा। संपूर्ण स्ट्रिंग को समायोजित करने के लिए, लौटा गया ऊंचाई घटक को उस मान पर समायोजित किया गया है जो स्ट्रिंग के साथ स्ट्रिंग को प्रदर्शित करने की अनुमति देता है।

दूसरे शब्दों में, यह फ़ंक्शन आपकी चौड़ाई के आधार पर आपकी स्ट्रिंग की ऊंचाई की गणना कर सकता है।

+1

मुझे लगता है कि आप में सक्षम होना चाहिए 'ग्राफिक्स' ऑब्जेक्ट प्राप्त करने के लिए 'Graphics.FromHwnd (myLabel.Handle)' का उपयोग करें। – Brian

+0

+1 अच्छा जवाब। किसी भी कारण में आपने ग्राफिक्स.फ्रेमहैंड (myLabel.Handle) को उत्तर में शामिल नहीं किया है? –

+1

@ कॉनफ्रैड: नहीं। – Brian

0

आप एक लेबल है और आप खड़ी फिट पर नियंत्रण है चाहते हैं, तो आप निम्न कर सकते हैं:

MyLabel.MaximumSize = new Size(MyLabel.Width, 0) 
MyLabel.Height = MyLabel.PreferredHeight 
MyLabel.MaximumSize = new Size(0, 0) 

यदि आप एक कंटेनर में एक लेबल है कि आकार दिया जा सकता है इस उदाहरण के लिए उपयोगी है । उस स्थिति में, आप Anchor प्रॉपर्टी सेट कर सकते हैं ताकि लेबल को क्षैतिज रूप से आकार दिया जा सके लेकिन लंबवत नहीं है, और आकार बदलने की स्थिति में, आप उपर्युक्त विधि का उपयोग करके ऊंचाई को फिट कर सकते हैं।

खड़ी फिटिंग से बचने के लिए एक नया आकार घटना के रूप में व्याख्या की जा करने के लिए, आप एक बूलियन उपयोग कर सकते हैं:

bool _inVerticalFit = false; 

और आकार बदलने स्थिति में:

if (_inVerticalFit) return; 
_inVerticalFit = true; 
MyLabel.MaximumSize = new Size(MyLabel.Width, 0) 
MyLabel.Height = MyLabel.PreferredHeight 
MyLabel.MaximumSize = new Size(0, 0) 
_inVerticalFit = false; 
संबंधित मुद्दे