2010-06-15 12 views
7

मेरे पास एक WinForm है जिसे मैं छोटा करना चाहता हूं जब शीर्ष दाएं कोने में "x" क्लिक किया जाता है। इसे पूरा करने के मेरे पास है:"x" WinForm को कम करने के लिए, ContextMenu WinForm को बंद करने के लिए?

private void Form_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     e.Cancel = true; 
     WindowState = FormWindowState.Minimized; 
    } 

सब कुछ ठीक है और अच्छा है कि, लेकिन अब मैं एक संदर्भ मेनू WinForm बंद करने का विकल्प है कि है, लेकिन इसके बाद के संस्करण कोड की वजह से, यह बस खिड़की कम करता है।

मैं जिस तरह से काम करना चाहता हूं, उसे सब कुछ कैसे प्राप्त कर सकता हूं?

उत्तर

10

क्लिक ईवेंट हैंडलर bool ध्वज सेट करें जो FormClosing ईवेंट हैंडलर में उपयोग किया जाता है।

public class YourForm : Form 
{  
    private bool _reallyClose; 

    private void ContextMenuClick(object sender, EventArgs e) 
    { 
     _reallyClose = true; 
     this.Close(); 
    } 

    private void Form_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     if (!_reallyClose) 
     { 
      e.Cancel = true; 
      WindowState = FormWindowState.Minimized; 
     } 
    } 

} 
+0

कोड उदाहरण के लिए धन्यवाद! :) – sooprise

+0

पूरी तरह से काम किया! – sooprise

0

आप जब बंद मेनू पर क्लिक करके एक झंडा स्थापित करने की आवश्यकता:

कोड नमूना नीचे Stripped।

फिर आप FormClosing में ध्वज की जांच कर सकते हैं और कुछ भी नहीं कर सकते हैं।

0

एक्स और सिस्टम संदर्भ मेनू दोनों एक ही विंडोज संदेश भेजते हैं, ऐसा नहीं लगता कि आप आसानी से कार्रवाई को अलग कर सकते हैं। यह Alt + F4 संदेश भी है।

मैं यह भी कहूंगा कि मैं इस गैर मानक व्यवहार को पसंद नहीं करूंगा, अगर मैं एक्स को हिट करता हूं तो मैं इसे बंद करना चाहता हूं, कम से कम नहीं, यह कि बाईं ओर वाला बटन 2 क्या है।

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

+0

मैं यह उल्लेख करना भूल गया कि यह ट्रे एप्लिकेशन के लिए है। तो "x" दबाकर विंडो को दृष्टि से हटा देता है, लेकिन एप्लिकेशन अभी भी ट्रे में चल रहा है। – sooprise

+0

वह संदर्भ मेनू है जिसे आप ट्रे आइकन से या उस विंडो के शीर्षक पट्टी से सिस्टम को संदर्भित करते हैं, जिसे आप छिपाना चाहते हैं, या कुछ अन्य संदर्भ मेनू? –

0

क्या आप प्रेषक को यह देखने के लिए जांच सकते हैं कि यह एक संदर्भमेन है और उचित तरीके से कार्य करता है?

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