केवल बंद (x) बटन को कैसे छिपाएं?


151

मेरे पास एक मोडल संवाद है, और क्लोज़ (X) बटन को छिपाने की आवश्यकता है, लेकिन मैं उपयोग नहीं कर सकता ControlBox = false, क्योंकि मुझे न्यूनतम और अधिकतम बटन रखने की आवश्यकता है।

मुझे बस क्लोज बटन छिपाने की जरूरत है, क्या ऐसा करने का कोई तरीका है?

आपका बहुत बहुत धन्यवाद!

अपडेट: मेरे पास इसे निष्क्रिय करने की अनुमति थी, जो सरल है :) सभी को धन्यवाद!


क्या यह वही हो सकता है जो यूओ चाहते हैं: [C # .NET में विन फॉर्म का क्लोज़ बटन [X] छिपाएँ] ( sameerrrutia.wordpress.com/2008/09/16/… ) सिर्फ googled: hide close button c#दूसरा परिणाम यहाँ! =)
मिगुएल एंजेलो

आप गलत हैं, मैं अक्षम बटन नहीं चाहता, लेकिन इसे छिपाएं .. क्या आप कोई समाधान ढूंढने में सक्षम हैं?
स्टेफानो एम

8
आवश्यकता एक मजबूत शब्द है। यह आवश्यकता कहां से आ रही है? वास्तविक आवश्यकता क्या है - कि उपयोगकर्ता कार्यक्रम को समाप्त नहीं कर सकता है, या यूआई "ऐसा लगता है कि इसमें पास बटन नहीं है"? क्योंकि इस के आसपास अन्य तरीके हैं, और आप उन सभी को पूरी तरह से बंद करने के लिए कड़ी मेहनत करने जा रहे हैं (जैसे कार्य प्रबंधक, टास्ककिल, संभवतः alt + f4, आदि)। मैं व्यक्तिगत रूप से इस पर बहुत अधिक काम नहीं करूंगा, क्योंकि जब तक आप किसी भी तरह से अपने पूरे ऐप को फिर से स्किन नहीं कर रहे हैं, तब तक यह बेकार का प्रयास होगा, और अन्य विंडोज प्रोग्राम के साथ उपयोगकर्ता की उम्मीदों / निरंतरता को तोड़ देगा।
मेरलिन मॉर्गन-ग्राहम

4
@ इस पेज से यह पता चलता है कि ऐसा कोई आलोचक न हो।
ब्रायन ग्राहम

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

जवाबों:


148

आप इसे छिपा नहीं सकते, लेकिन आप इसे प्रपत्र की CreateParams संपत्ति को ओवरराइड करके अक्षम कर सकते हैं।

private const int CP_NOCLOSE_BUTTON = 0x200;
protected override CreateParams CreateParams
{
    get
    {
       CreateParams myCp = base.CreateParams;
       myCp.ClassStyle = myCp.ClassStyle | CP_NOCLOSE_BUTTON ;
       return myCp;
    }
}

स्रोत: http://www.codeproject.com/KB/cs/DisableClose.aspx


धन्यवाद, मुझे यह समाधान मिला, लेकिन हम इसे छिपाएंगे, न कि केवल अक्षम करें :( anywat धन्यवाद!
stefano m

4
खरोंच से अपना फ़ॉर्म डिज़ाइन करने के अलावा कोई रास्ता नहीं है।
डैनियल ए। व्हाइट व्हाइट

हाँ। बेहतर अपने स्वयं के नियंत्रण बॉक्स के साथ अपने स्वयं के फॉर्म को क्लोज बटन के बिना बनाएं और फिर पैरेंट फॉर्म के नियंत्रण बॉक्स को छिपाएं।
बहमुत

And अभिषेक.घोपड़ा ’का उत्तर सरल और प्रभावी है।
अल्ताफ पटेल

फिर से रनटाइम के दौरान इसे कैसे सक्षम करें?
माइक डी क्लार्क

158

हम सेटिंग द्वारा फॉर्म पर क्लोज बटन छिपा सकते हैं this.ControlBox=false;


29
क्या आपने वह प्रश्न पढ़ा है जिसमें उन्होंने निर्दिष्ट किया था कि विकल्प नहीं था?
सेवारत

28
क्या Google ने खोज की थी और यह SO QA शीर्ष हिट था। और यह जवाब वही था जिसकी मुझे तलाश थी। शुक्रिया अभिषेक ...
हाबिल गक्सियोला

15
यह उन सभी आकार के बटन को छुपाता है। सिर्फ एक्स ही नहीं
रिच शीलर

1
आपको बहुत - बहुत धन्यवाद! सबसे आसान उपाय।

26

ठीक है, आप इसे छिपा सकते हैं, पूरे सिस्टम मेनू को हटाकर:

private const int WS_SYSMENU = 0x80000;
protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;
        cp.Style &= ~WS_SYSMENU;
        return cp;
    }
}

बेशक, ऐसा करने से न्यूनतम और अधिकतम बटन हटा दिए जाते हैं।

यदि आप सिस्टम मेन्यू रखते हैं लेकिन क्लोज आइटम को हटा देते हैं तो क्लोज बटन रहता है लेकिन डिसेबल है।

अंतिम विकल्प गैर-ग्राहक क्षेत्र को स्वयं पेंट करना है। यह सही पाने के लिए बहुत कठिन है।


4
यह भी महान काम करता है! लेकिन ControlBox = false अपने तरीके से उपयोग करना आसान है।
8

1
यह ControlBoxअसत्य की स्थापना के समान है । इसके अलावा, यह आवश्यकता को विफल करता है: मुझे
मिनिमाइज़

23

आप का उपयोग करके बंद बॉक्स छिपा सकते हैं

this.ControlBox = false;

और this.Text = " "इसे इस तरह बनाने के लिए सफेद स्थान जोड़ना न भूलें

यहाँ छवि विवरण दर्ज करें


2
मुझे इसकी ही आवश्यकता थी। धन्यवाद।
कोसमस

2
यह सही नहीं है। सीधे ओपी के सवाल से: मैं इस्तेमाल नहीं कर सकताControlBox = false
मार्टिन

8

यदि आप वास्तव में इसे छिपाना चाहते हैं, जैसा कि "दृश्यमान नहीं" है, तो आपको संभवतः एक सीमाहीन रूप बनाना होगा और कैप्टन घटकों को स्वयं आकर्षित करना होगा। VisualStyles लाइब्रेरी में विंडोज एलिमेंट्स उपलब्ध हैं। आपको फॉर्म को फिर से आकार देने या कैप्शन बार को हथियाने के द्वारा फ़ॉर्म को आगे बढ़ाने की कार्यक्षमता में भी जोड़ना होगा। कोने में सिस्टम मेनू का उल्लेख नहीं करना है।

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


2

आपके फॉर्म के गुणों में 'कंट्रोल बॉक्स' = गलत सेट है, लेकिन यह मिनिमाइज़्ड और मैक्सिमम को भी छिपा देगा।


1

अच्छी तरह से आप गुण अनुभाग से FormBorderStyle को बदलकर या निर्माणकर्ता द्वारा प्रोग्रामेटिक रूप से उपयोग करके क्लोज बटन छिपा सकते हैं:

public Form1()
{
InitializeComponent();
this.FormBorderStyle = FormBorderStyle.None;
}

तब आप एप्लिकेशन से बाहर निकलने के लिए एक मेनू स्ट्रिप आइटम बनाते हैं।

चियर्स

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.