2012-06-15 9 views
10

से छोटे आकार का आकार नहीं दिखाते हैं। यह समस्या स्पष्ट रूप से समझाया गया है, इसलिए मैंने विजुअल स्टूडियो 2010 प्रोजेक्ट के साथ git repo सेट अप किया है जिसका उपयोग कार्रवाई में समस्या को देखने के लिए किया जाता है।टेबललेआउट के भीतर डाले गए डॉक किए गए नियंत्रण स्वचालित रूप से उनके निर्माण आकार

मेरे पास एक प्रोजेक्ट है जहां मैंने एक कॉम्बोबॉक्स नियंत्रण (comboField) को टेबललेआउट नियंत्रण (tableLayoutPanel1) में जोड़ा है। मैंने कॉम्बोबॉक्स की Dock प्रॉपर्टी Fill पर सेट की है ताकि यह उस टेबललेआउट नियंत्रण के सेल को भर सके जिसे इसे रखा गया है। मैंने Dock टेबललेआउट नियंत्रण की संपत्ति Fill पर भी सेट की है ताकि यह फ़ॉर्म भर जाए इसे रखा गया है। कॉम्बोबॉक्स की चौड़ाई वर्तमान में 1 9 3 पिक्सल है।

जब मैं फॉर्म चलाता हूं और इसकी चौड़ाई बढ़ाता हूं, तो कॉम्बोबॉक्स का आकार बढ़ता है, जैसा कि अपेक्षित है। जब मैं फॉर्म के आकार को कम करता हूं, तो कॉम्बोबॉक्स आकार तक कम हो जाता है, यह इसके मूल आकार (1 9 3 पिक्सेल) तक पहुंचता है। उस बिंदु पर, कॉम्बोबॉक्स की चौड़ाई आगे नहीं बढ़ेगी, जिसके परिणामस्वरूप नियंत्रण के दायीं तरफ फिसल जा रहा है। यह मेरी अपेक्षा के विपरीत है: कॉम्बोबॉक्स की चौड़ाई शून्य हो जाएगी, बशर्ते कि MinimumSize निर्दिष्ट नहीं किया गया है। न तो MinimumSize को फॉर्म पर किसी अन्य नियंत्रण के लिए निर्दिष्ट किया गया है, जैसे कि TableLayout नियंत्रण।

मामले में यह TableLayout का पहला स्तंभ की चौड़ाई, 100 पिक्सल के एक Absolute आकार करने के लिए सेट कर दिया जाता है, जबकि TableLayout के दूसरे स्तंभ की चौड़ाई AutoSize करने के लिए सेट कर दिया गया है प्रासंगिक है,।

क्या कोई इस बारे में कोई प्रकाश डाल सकता है कि यह फ़ॉर्म मेरी अपेक्षाओं के विपरीत क्यों व्यवहार कर रहा है और सलाह देता हूं कि मैं इस तरीके से कैसे काम कर सकता हूं? कोई भी सहायताकाफी प्रशंसनीय होगी।

उत्तर

4

टेबललेआउट पैनेल नियंत्रण के प्रारंभिक आकार को संग्रहीत करता है और कभी भी डॉकिंग, एंकरिंग या ऑटोसाइजोड.ग्रा एंडश्रिंक जैसे किसी भी अन्य मूल्यों के बावजूद उन्हें छोटा बना देता है। डिजाइनर में डॉक किए गए नियंत्रण का आकार हमेशा संग्रहीत किया जाएगा, इसलिए सबसे आसान तरीका मैंने पाया है कि चौड़ाई को प्रारंभिक कंपोनेंटेंट के बाद 0 पर सेट करना है (क्योंकि नियंत्रण डॉक किया गया है, यह वास्तव में combobox का आकार नहीं लेगा, लेकिन यह होगा TableLayoutPanel यह के रूप में सेट चौड़ाई के रूप में छोटे बनाने के लिए)

 InitializeComponent(); 
     comboField.Width = 0; 
+1

यह काम करता है! धन्यवाद! https://github.com/IAmAI/TableLayoutSizingIssueTest/tree/fix-Me.Name –

9

मैं अपने कोड डाउनलोड किया है और यह परिवर्तन किया अनुमति देते हैं। यह अब काम करता है -

प्रतिशत करने के लिए 2 स्तंभ के SizeType करो और यह 100%

डिजाइनर संहिता बनाने: -

this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); 

enter image description here

+1

यह भी काम करता है। धन्यवाद, एंडशमान। https://github.com/IAmAI/TableLayoutSizingIssueTest/tree/fix-Angshuman –

+1

कूल..धन्यवाद !! यदि कॉलम/पंक्ति का आकार प्रतिशत पर सेट किया गया है, तो कॉलम/पंक्ति का आकार TableLayoutPanel के आकार से निर्धारित होता है। –

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