2010-08-25 4 views
15

मुझे एक विंडोज़ फॉर्म ऑब्जेक्ट मिला है जिसमें 3 ऑब्जेक्ट्स, ट्रीव्यूव, एक रिचटेक्स्टबॉक्स, और एक टैब कंट्रोल है। वे खिड़कियों के रूप में डॉक नहीं किए जाते हैं, लेकिन वे एंकर (शीर्ष + बाएं) हैं।मुझे अपने विंडोज़ फॉर्म ऑब्जेक्ट का आकार बदलने (डाउनसाइजिंग) से रोक रहा है?

एक फॉर्म-आकार बदलने वाले ईवेंट हैंडलर को कॉल करते समय मैंने उन्हें आकार देने के लिए कोड लिखा है, लेकिन ऐसा लगता है कि यह फ़ॉर्म आकार में वृद्धि के लिए काम कर रहा है, जिसका अर्थ है, मैं फॉर्म का आकार बदल नहीं सकता एक छोटा सा आकार इसमें ऐसे समय शामिल होते हैं जब मैं पहली बार मुख्य विंडो फॉर्म बढ़ाता हूं और फिर इसे अपने मूल आकार में वापस करने का प्रयास करता हूं। (

 treeView1.Height += (this.Height - oldHeight); 
     richTextBox1.Width += (this.Width - oldWidth); 
     tabControl1.Width += (this.Width - oldWidth); 
     tabControl1.Height += (this.Height - oldHeight); 
     oldHeight = this.Height; 
     oldWidth = this.Width; 

वस्तुओं में से कोई भी एक सेट न्यूनतम आकार है वे आकार बदलने प्रक्रिया के दौरान 0,0 बिल्कुल हैं:

तीन वस्तुओं के आकार मैन्युअल रूप से प्रत्येक फार्म के बाद सेट कर रहे हैं नीचे कोड के साथ आकार परिवर्तन)

फ़ॉर्म को छोटे आकार में आकार देने से रोक रहा है?

+0

क्या कोई कारण है कि आप .NET में डॉकिंग तंत्र का उपयोग न करें? यह आपके लिए आकार बदलने का ख्याल रखेगा। –

+0

डॉकिंग हम जो उम्मीद कर रहे थे उसके लिए बहुत ही सीमित लग रहा था, जीयूआई-वार। हमारे फॉर्म टूल्स की स्थिति हमारे लिए कार्यान्वयन की आसानी को खत्म कर देती है। – Maixy

उत्तर

18

AutoSize (जो मुख्य फार्म वस्तु पर स्थापित किया गया था) एक आकार से उसमें मौजूद वस्तुओं की तुलना में छोटे को कम करने से खिड़की को रोकने था। चूंकि मुख्य रूप में वस्तुएं प्रत्येक विशाल आकार में बढ़ीं, मुख्य रूप किसी भी आकार के विकास के बाद घटने में असमर्थ था। द्वारा मुख्य फॉर्म ऑब्जेक्ट पर ऑटोसाइज अक्षम करने से, मैं आकार बदलने का पूर्ण नियंत्रण प्राप्त करने में सक्षम था।

+2

इसे पढ़ने के लिए किसी भी अन्य व्यक्ति के लिए, "AutoSizeMode" संपत्ति देखें जो केवल GrowOnly के लिए डिफ़ॉल्ट है। इसे GrowAndShrink में बदलना इस समस्या को हल कर सकता है (कोई वादा नहीं)। – ManEatingCheese

0

बस अपने सभी एक Panel में Controls रख दिया और Fill करने के लिए Panel की Dock गुण सेट। मेरा मानना ​​है कि यह Autosize के साथ भी सही काम करता है।

1

सही दृश्य स्टूडियो में अपने Winform क्लिक करें -> का चयन गुण ->AutoSizeसच की स्थापना की जाएगी -> यह करने के लिए परिवर्तित झूठी

या

इस लाइन को शामिल करें आपके कोड में

this.AutoSize = false; 
4

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

0

एक ऐसे फॉर्म के व्यवहार को सही करने का एक और तरीका हो सकता है जिसे सामान्य माउस चयन द्वारा आकार में नहीं बदला जा सकता है।

उपर्युक्त चर्चा से संबंधित, मैंने पाया [वीएस 2010 में वीबीनेट का उपयोग करके] कि मेरे मानक विंडोज़ फॉर्मों में से एक माउस चयन के साथ आकार बदल नहीं पाएगा। ऐसा लगता है कि फॉर्मबॉर्डर स्टाइल को "फिक्स्ड" के रूप में सेट किया गया था। SizableToolWindow को FormBorderStyle को बदलने से भी अपेक्षित माउस-बड़े व्यवहार नहीं किए गए। AutoSize: झूठी AutoSizeMode: growonly Doublebuffered: सच सक्षम किया गया: सच FormBorderStyle: बड़े-बड़े ImeMode: NoControl लॉक किया गया: झूठी AutoScaleMode: फ़ॉन्ट AccessibleRole

यहाँ प्रपत्र डिजाइन गुण से किसी न किसी रूप सेटिंग्स हैं: डिफ़ॉल्ट

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

myForm.AutoScaleMode = Windows.Forms.AutoScaleMode.Inherit

यह पैरामीटर था:

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

फिर ... अजीब तरह से ... इसे वापस बदल रहा है। कोड से "फ़ॉन्ट" में भी। फ़ॉर्म को उचित रूप से आकार बदलने की अनुमति भी दी गई है।

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

+0

वर्डी और अस्पष्ट, लेकिन दूसरे रूप में और दूसरों के साथ तुलना में, काफी वीएलक्यू नहीं। –

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