2010-07-28 11 views
5

C# .net uygulamasına sahibim. Bu yüzden tepsiye oturan bir notifycon yarattım. Yapmak istediğim, kullanıcı formdaki "x" düğmesine bastığında, tepsiye yakın olmasını istiyorum. Programdan sadece tepsi simgesindeki bağlam menüsünü kullanarak çıkabilmelidirler.C# tablaya yakın (msn messenger gibi)

Yaptığım şey, formun kapatılması olayında, formun görünür olup olmadığını kontrol ettim. Görünürse, görünmez olarak ayarlayın ve showInTaskbar öğesini false olarak ayarlayın (tepsiye küçültmeyi simüle etme). Form zaten görünmezse, muhtemelen tepsiden kapatırlar, bu durumda programdan çıkacağım.

Ancak, sahip olduğum sorun şu ki, pencere görünürse, ancak tepsi simgesinin içerik menüsüne sağ tıklayıp çıkışa bastığında, programdan çıkmalı ve en aza indirmemeliyiz.

Bu sorunu nasıl çözebilirim?

+0

Application.exit() işe yaramaz, çünkü bu hala form kapatma olayını tetikler. Sanırım, bazı insanların belirttiği gibi, isteğin nereden geldiğini işaret etmek için bir bayrak kullanmam gerekecek (tepsi menüsü vs x düğmesi) –

cevap

3

deneyin bu:

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; 
    } 
} 

veya yalnızca bir biçimini varsa bağlam menü öğesi işleyicisinde Application.Exit(); çağırabilir

0

Muhtemelen uygulamanın durumunu, kullanıcının penceresine yansıtılmadığı için kullanıcının eylemlerini temel alarak izlemek isteyebilirsiniz. Kullanıcı menüden Çıkış'ı seçtiğinde, sadece pencereyi gizlemekten değil, gerçekten çıktığınızı belirtmek için bir bayrak ayarlamanız gerekir.

0

Sadece yapmak için Context Menu yakın olay çağrı Application.Exit()