2010-10-19 6 views
8

क्या WinForms लेआउट इंजन का उपयोग इस तरह से एक फॉर्म सेट करने के लिए करना संभव है कि सामग्री को फिट करने के लिए ऊंचाई पूरी तरह से स्वचालित रूप से समायोजित हो, लेकिन चौड़ाई उपयोगकर्ता द्वारा समायोज्य होगी? 1 पंक्ति और 2 कॉलम के साथ, TableLayoutPanel:चौड़ाई समायोज्य छोड़ते समय WinForms लंबवत autosize?

  • TLP:

    उदाहरण के लिए, निम्नलिखित कुछ हद तक काल्पनिक रूप पर विचार करें।

  • label1: Label, बाएं कॉलम में निहित है। Text को कुछ लंबे, AutoSize को झूठी, Dock भरने के लिए सेट करें।
  • button1: बटन, दाएं कॉलम में निहित है। AutoSize को सत्य पर सेट करें।
  • अब पंक्ति को "ऑटोसाइज" पर सेट करें, पहला कॉलम "100%" और दूसरा कॉलम "ऑटोसाइज" पर सेट करें।
  • अंत में, पूरे TLP से AutoSize सत्य, AutoSizeMode को GrowAndShrink पर सेट करें।

इस बिंदु पर, TLP को क्षैतिज रूप से आकार बदल दिया जा सकता है, लेकिन WinForms यह अनुमति नहीं देता है।

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

उत्तर

6

उम्मीद है कि अब तक आपको समाधान मिला है। लेकिन अगर किसी के पास एक ही प्रश्न है, तो आप फॉर्म की वास्तविक चौड़ाई और अधिकतम आकार की ऊंचाई पर अधिकतम आकार संपत्ति की चौड़ाई निर्धारित कर सकते हैं।

1

यह पूरी तरह से संभव है। ऐसा करने के लिए, आपको अपने फॉर्म पर SetBoundsCore ओवरराइड करना होगा। इसमें आप ऊंचाई को नियंत्रित कर सकते हैं जैसे कि जब कोई आकार बदलना चाहें तो यह नहीं बदलेगा। केवल उस ऊंचाई को संग्रहित करें जिसे आप एक चर में होना चाहते हैं और फिर अपने ओवरराइड को हमेशा उस पर सेट करें। इस तरह, जब आप ऊंचाई को स्वतः आकार देते हैं, तो आप फॉर्म Height और SetBoundsCore सेट करने से पहले नई ऊंचाई को जागृत करते हैं, जो उस नई ऊंचाई का सम्मान करेंगे।

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