2010-09-02 10 views
7

मेरे पास Windows.Form पर एक लेबल है। मैंने लेबल पर ऑटोसाइज प्रॉपर्टी को सही पर सेट किया और मैंने देखा कि जब मैं ऐसा करता हूं, तो यह सफेद पृष्ठभूमि की ~ 5px के साथ दाईं ओर पैड करता है। मेरे पास पैडिंग प्रॉपर्टी सेट है [0, 0, 0, 0]। क्या इससे छुटकारा पाने का कोई तरीका है?सी # लेबल ऑटोसाइज पैडिंग जोड़ता है

मैं लेबल के भीतर जितना संभव हो सके लेबल की सीमाएं प्राप्त करना चाहता हूं।

उत्तर

11

जब आप केवल पैडिंग और मार्जिन का उपयोग करते हैं तो कोई रास्ता नहीं है। यह डिफ़ॉल्ट व्यवहार है।

alt text

ऊपर Window में मैं Padding और Margin[0,0,0,0] लिए निर्धारित किया है। वे 5 पिक्सल अभी भी वहां हैं।

आप FlatStyle = System सेट और AutoSize = False आप इस प्राप्त कर सकते हैं:

alt text

ऊपर Window में आप उन 5 पिक्सल अब और नहीं है।

+0

AutoSize बंद करने से एक मैनुअल राशि के लिए लेबल आकार सेट हो जाएगा: और फिर एक संपत्ति है कि इस तरह चौड़ाई की गणना करेगा की स्थापना की। चूंकि लेबल में टेक्स्ट बदल जाएगा, इसे आकार बदलने की आवश्यकता होगी। ऑटोसाइज संपत्ति मेरे लिए यह करती है। अगर इस संपत्ति को अनुकरण करने का कोई तरीका है, तो यह एक स्वीकार्य उत्तर भी होगा। – MarkP

+1

FlatStyle = सिस्टम, कमाल, जो मुझे मार रहा था, धन्यवाद! +1 –

+0

क्या आप दूसरी विंडो प्राप्त करने के लिए उपयोग किए गए कोड को प्रदान कर सकते हैं? मैं पहली खिड़की प्राप्त कर रहा हूं .. – pteixeira

1

ठीक है, तो FlastStyle = सिस्टम; ऑटोसाइज = झूठा;

public string LabelText 
{ 
    set 
    { 
     _label.Text = value; 
     using (Graphics g = CreateGraphics()) { 
      _label.Width = (int)g.MeasureString(_label.Text, _label.Font).Width; 
     } 
    } 

}

संबंधित मुद्दे