2010-07-28 13 views
5

मेरे पास एक सी # .net ऐप है। तो मैंने ट्रे में बैठे एक अधिसूचना चिह्न बनाया। मैं क्या करना चाहता हूं जब उपयोगकर्ता फॉर्म पर "एक्स" बटन हिट करता है, तो मैं इसे ट्रे के करीब रखना चाहता हूं। वे ट्रे आइकन में संदर्भ मेनू का उपयोग कर प्रोग्राम से बाहर निकलने में सक्षम होना चाहिए।सी # ट्रे के करीब (जैसे एमएसएन मैसेंजर)

तो मैंने जो किया, वह करीबी घटना पर था, मैं जांचता हूं कि फॉर्म दिखाई दे रहा है या नहीं। यदि यह दिखाई देता है, तो मैंने इसे अदृश्य पर सेट किया है और शोइन टास्कबार को झूठा करने के लिए सेट किया है (ट्रे को कम से कम सिमुलेट करना) यदि फॉर्म पहले से ही अदृश्य है, तो वे शायद इसे ट्रे से बंद कर रहे हैं, इसलिए मैं उस मामले में प्रोग्राम से बाहर निकलूंगा।

हालांकि, मेरी समस्या यह है कि यदि खिड़की दिखाई दे रही है, लेकिन वे ट्रे आइकन के संदर्भ मेनू पर राइट क्लिक करें और बाहर निकलें, मुझे प्रोग्राम से बाहर निकलने की आवश्यकता है और कम से कम नहीं।

मैं इस समस्या को कैसे हल करूं?

+0

Application.exit() काम नहीं करेगा क्योंकि यह अभी भी फॉर्म बंद करने की घटना को ट्रिगर करता है। मुझे लगता है, जैसा कि कुछ लोगों ने उल्लेख किया है, मुझे संकेत देने के लिए ध्वज का उपयोग करने की आवश्यकता होगी कि अनुरोध कहां से आ रहा है (ट्रे मेनू बनाम एक्स बटन) –

उत्तर

3

कोशिश यह:

bool _closingFromMenu; 

void NOTIFYICON_EXIT_MENU_HANDLER(object sender, EventArgs e) 
{ 
    _closingFromMenu = true; 
    Close(); 
} 

//form closing handler 
FormClosing +=(a,b) =>{ 
    if(_closingFromMenu){ 
     Close(); 
    } 
    else{ 
     e.Cancel = true; 
     //do minimize stuff; 
    } 
} 

या यदि आप केवल एक रूप है आप संदर्भ मेनू आइटम हैंडलर में Application.Exit(); कॉल कर सकते हैं

0

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

0

बस अपने संदर्भ मेनू पास घटना कॉल Application.Exit()

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