2011-03-15 14 views
25

में न्यूनतम विंडो आकार सेट करें मुझे एक सी # एप्लिकेशन में मेरी विंडो का न्यूनतम आकार सेट करने में समस्या हो रही है, जिस पर मैं काम कर रहा हूं। मैं फार्म के निर्माता में इस कोड की कोशिश की है:सी # .NET

this.MinimumSize.Width = 800; 
this.MinimumSize.Height = 600; 

लेकिन संकलक का कहना है:

Cannot modify the return value of 'System.Windows.Forms.Control.MinimumSize' because it is not a variable

किसी को भी मेरे लिए इस मुद्दे पर कुछ प्रकाश डाला सकता है?

संपादित करें:

का उपयोग करना:

this.MinimumSize = new Size(800,600); 

देता है:

error CS0118: 'System.Windows.Forms.Form.Size' is a 'property' but is used like a 'type' 

माफ करना, मैं मैं पहले से ही है कि कोशिश की थी कि उल्लेख करना भूल गया। यह भी उल्लेख करना भूल गया कि मैं विजुअल स्टूडियो का उपयोग नहीं कर रहा हूं।

+0

आकार एक 'struct' है और आप एक नया' struct' बनाना होगा। –

+1

मूल्य और संदर्भ प्रकारों के बीच अंतर के बारे में अपनी पसंदीदा सी # भाषा पुस्तक से परामर्श लें। आकार का प्रकार एक संरचना है, एक मूल्य प्रकार है। –

+0

वह कंपाइलर क्या है? – SLaks

उत्तर

43

चूंकि Size एक संरचना है, तो आप ऐसा नहीं कर सकते हैं।
इसके बजाय, आप, संपत्ति के लिए एक नया Size मूल्य निर्दिष्ट करने की जरूरत है इस तरह:

this.MinimumSize = new Size(800, 600); 

संपादित आपका संकलक गलत है; यह संपत्ति के साथ Size कक्षा को भ्रमित कर रहा है।

इस अन्यायपूर्ण त्रुटि को हल करने के लिए, आप एक नाम स्थान के साथ प्रकार अर्हता प्राप्त करने की जरूरत है:

this.MinimumSize = new System.Drawing.Size(800, 600); 

या फिर आप using System.Drawing भूल गया।

+0

system.drawing में मान को संग्रहीत करने पर विचार करें ... मुझे एक बदली खिड़की के आकार को सेट करने के लिए मुझे क्यों चाहिए? धन्यवाद – Dai

+6

@ दाई: क्योंकि विंडोज़ फॉर्म को तैयार करने की आवश्यकता है। http://msdn.microsoft.com/en-us/library/system.drawing.aspx –

+0

एक ही समस्या थी, यह उत्तर है। धन्यवाद +1! –

3

आप MinimumSize संपत्ति को सीधे आवंटित करने के लिए की जरूरत है:

this.MinimumSize = new Size(800, 600); 

असल में, MinimumSize संपत्ति की वापसी मान हमेशा एक नई struct वस्तु है; कंपाइलर आपको इस अस्थायी मान को निर्दिष्ट नहीं करने देता है (जैसा कि त्रुटि में बताया गया है, यह एक चर नहीं है)।

This MSDN Social thread विषय के बारे में सबसे अधिक प्रबुद्ध है।

6

आप कुछ इस तरह का उपयोग करना चाहिए:

this.MinimumSize = new Size(100, 100);

Width और Height उन्हें निर्धारित करने के बजाय मौजूदा मूल्यों को प्राप्त करने के लिए उपयोग किया जाता है।

आप MinimumSize की परिभाषा के लिए जाना, तो आप इस देखेंगे:

public override Size MinimumSize { get; set; }

एक बार फिर इस बात की पुष्टि भी जब आप इसके लिए मान सेट करने का फैसला, तो आप एक वास्तविक Size उदाहरण पारित करने के लिए है कि ।Width और Height गुण Size उदाहरण से सख्ती से बंधे हैं।

+0

यह वास्तव में सच नहीं है; गुण लिखने योग्य हैं। – SLaks

+0

गुण आकार के उदाहरण के लिए लिखने योग्य हैं (जब आप इसे न्यूनतम आकार में पास कर रहे हैं)। –

3

इस संकलक त्रुटि है:

http://msdn.microsoft.com/en-us/library/wydkhw2c(VS.71).aspx

बुनियादी समस्या यह है कि MinimumSize सदस्य संपत्ति एक struct देता है - जो एक मान प्रकार है - और इसलिए एक स्थानीय अस्थायी चर में बनाई जाए - और इस आपको मूल्य को वापस अंतर्निहित संपत्ति पर लिखने से रोकता है।

इस के आसपास पाने के लिए आपको खुद MinimumSize को आवंटित करने के लिए की जरूरत है:

this.MinimumSize = new Size(800, 600);