2010-02-04 13 views
15

हाय मेरे पास tablelayoutpanel है और मैं गतिशील रूप से इसके लिए बाध्यकारी नियंत्रण कर रहा हूं। जब आइटम गिनती पैनल की ऊंचाई से अधिक हो जाती है तो स्पष्ट रूप से वर्टिकल स्क्रॉल बार दिखाई देने में कोई समस्या नहीं होती है।Winforms में तालिका पैनल के लिए क्षैतिज स्क्रॉलबार को कैसे अक्षम करें

लेकिन उसी समय क्षैतिज स्क्रॉल बार भी दिखाई दे रहा है, आइटम की चौड़ाई भी पैनल की चौड़ाई से कम है। मेरे द्वारा इसे कैसे रोका जा सकता है?

+0

मुझे एहसास है कि यह 4 साल का है, हालांकि, मेरे पास अभी भी वही था (या आज भी इसी तरह की समस्या है, और फिक्स 'ऑटोस्क्रॉल = झूठी' के रूप में सरल था उम्मीद है कि यह किसी की मदद करेगा! – Cullub

+3

@cullub 'AutoScroll = false' वर्टिकल स्क्रॉलबार को भी अक्षम कर देगा, लेकिन सवाल यह है कि केवल क्षैतिज स्क्रॉलबार को अक्षम करने के लिए – Nikita

उत्तर

1

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

1

मुझे इस समस्या का अनुभव हुआ है।

बहुत से लोगों को भी डाटाग्रिड में एक ही समस्या मिलती है। लेकिन, इस प्रश्न के लिए कोई सटीक समाधान नहीं है, आपको उपयोग के अनुसार पैनल के आयाम को मैन्युअल रूप से तय करना होगा।

tableLayoutPanel1.HorizontalScroll.Enabled = false; 

इस क्षैतिज स्क्रॉल पट्टी को निष्क्रिय कर देगा, लेकिन आप मैन्युअल रूप से तालिका लेआउट पैनल के आयाम को समायोजित करना होगा।

एक और तरीका रन टाइम के दौरान टेबललेआउट पैनेल की संभावित चौड़ाई की गणना कर सकता है और यदि आपके द्वारा सेट किए गए मान से अधिक है तो आप इसे सक्षम कर सकते हैं।

tableLayoutPanel1.HorizontalScroll.Enabled = true; 
+1

काम नहीं करता है। क्षैतिज स्क्रॉलबार पहले जैसा दिखता है। वैकल्पिक 'दृश्यमान' संपत्ति या तो काम नहीं करती है। – ygoe

32
int vertScrollWidth = SystemInformation.VerticalScrollBarWidth; 

tableLayoutPanel1.Padding = new Padding(0, 0, vertScrollWidth, 0); 
+3

यह वास्तव में काम करता है! धन्यवाद! –

+1

मजेदार समाधान। क्या आपको किसी भी मौके से पता है कि यह जादूगर क्यों काम करता है? –

+1

ने इसे .NET 4.6.2 पर परीक्षण किया। यह ऊंचाई पर्याप्त नहीं होने पर एच-स्क्रॉल बार को हटा देता है, लेकिन समस्या यह है कि यह दाईं ओर एक विस्तृत मार्जिन बनाता है जो वी-स्क्रॉल बार प्रकट होने पर गायब नहीं होता है। मैं चाहता हूं कि TableLayoutPanel टी भरने के लिए वह चौड़ाई खिड़की। –

6

यह आज पर कुछ बाल खो दिया है, लेकिन मैं इसे हल और यह है कि क्या मैं के साथ समाप्त हो गया है:

  1. एक नया वर्ग है कि TableLayoutPanel से विरासत बनाएँ (देता है इसे कहते MyTableLayoutPanel), और इस तरह MaximumSize संपत्ति को ओवरराइड:

    public override Size MaximumSize 
    { 
        get 
        { 
         if (Parent != null) 
          return new Size(Parent.Width, 0); 
         else 
          return base.MaximumSize; 
        } 
        set 
        { 
         base.MaximumSize = value; 
        } 
    } 
    

    आप निश्चित रूप से कर सकता है इसे और अधिक जीई एक और संपत्ति जोड़कर नैतिक उद्देश्य यह तय करता है कि आपको संशोधित अधिकतम आकार वापस करना चाहिए या नहीं, लेकिन उम्मीद है कि यह पढ़ने वाले किसी भी व्यक्ति के लिए बहुत स्पष्ट है।

  2. TableLayoutPanel को बदलें जो आपको नए MyTableLayoutPanel प्रकार में मिला है।

  3. इसे एक नियमित पैनल में जोड़ें। MyTableLayoutPanel के बजाय इस पैनल पर ऑटोस्क्रॉल सक्षम करें (यदि आप पहले से नहीं हैं तो इसे अक्षम करें)।

  4. MyTableLayoutPanel ऑटोसाइज संपत्ति को सत्य और उसके एंकर संपत्ति को बाएं, दाएं और शीर्ष पर सेट करें।

+0

यह एकमात्र समाधान है जो वास्तव में मेरे लेआउट के लिए काम करता है, धन्यवाद! –

2

मुझे इस समस्या को एक डॉक किए गए TableLayoutPanel के साथ डॉक किया गया समूह बॉक्स और एक कॉलम सेट 100% चौड़ाई के साथ था। मैं इनके लिए मैन्युअल आकार सेट नहीं करना चाहता था - मैं चाहता था कि वे फॉर्म के साथ आकार बदल दें।

आश्चर्यजनक रूप से, TableLayoutPanel के दाएं पैडिंग को सेट करने के लिए (स्क्रॉलबार की चौड़ाई नहीं - जो स्क्रॉलबार आकार के अंतर को छोड़ देता है, जैसा कि आप उम्मीद करेंगे) इस मुद्दे को पूरी तरह हल कर लेते हैं। यह सी # 2010 एक्सप्रेस, .NET 4, विंडोज 8 में है। कोई विचार नहीं कि यह क्लज अन्य भिन्नताओं पर काम करता है।

आईडीई में समस्या को हल करने के लिए पर पैडिंग सेट करना लग रहा था, लेकिन समस्या वास्तव में चलने पर भी मौजूद थी।

मेरे लिए TableLayoutPanel में किसी प्रकार की बग की तरह बदबू आ रही है ... या हो सकता है कि यह केवल मेरे नियंत्रण और गुणों का विशेष संयोजन है (यह एक बहुत ही जटिल लेआउट है)।

+1

ने .NET 3.5, विंडोज 7 के लिए पुष्टि की – miasbeck

1

यह .NET 3.5 में पूरी तरह से काम किया, जहां अन्य समाधान मुझे बिल्कुल नहीं दिया कि मैं क्या चाहता था:

if (this.TableLayoutPanel1.HorizontalScroll.Visible) 
    { 
    int newWid = this.TableLayoutPanel1.Width - 
        (2 * SystemInformation.VerticalScrollBarWidth); 
    //this.TableLayoutPanel1.Padding = new Padding(0, 0, newWid, 0); 
    foreach (Control ctl in this.TableLayoutPanel1.Controls) 
    { 
     ctl.Width = newWid; 
    } 
    } 
0

मैं एक साधारण पैनल जिसमें मैं TableLayoutPanel डॉक्ड का उपयोग करके इस हल किया। तब मैंने टीएलपी को स्क्रॉलबार नहीं बनाया, लेकिन पैनल। यह मेरे लिए ठीक काम करता है।

मुझे लगता है कि विभिन्न स्तंभों के साथ टीएलपी मानते हैं और पंक्तियों में प्रत्येक के लिए चौड़ाई की गणना करने के लिए समस्याएं होती हैं और इस प्रकार आवश्यक होने पर भी एक लंबवत स्क्रॉलबार दिखाती है।

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