2009-12-08 7 views
7

Wpf penceresinin "x" tuşu ile kapatılıp kapatılmadığını nasıl öğrenir?Pencerenin "x" tuşu ile kapatılıp kapatılmadığını nasıl öğrenebilirim?

+0

Netleştirebilir misiniz? "X" düğmesine basmak ile pencereyi kapatmak için başka araçlar (yani klavye) arasında ayrım yapmak ister misiniz? Veya pencereyi kapatmanın herhangi bir yolu var mı? –

+0

"X" düğmesine basmak ile pencereyi kapatmak için başka araçlar (yani klavye) arasında ayrım yapmak – Vytas999

+1

Bunu neden yapmak istediğinizi açıklarsanız faydalı olur. Kullanıcıya X'in veya bir menü maddesinin kapalı olup olmaması önemli değil. Belki de onun yerine yapmak istediğin şeyi başarmana yardım edebiliriz. –

cevap

11

En basit yol (benim düşüncemde), kullanıcının formu başka bir yöntemle kapatıp kapatmadığını belirten bir boolean depolamaktır.

Ardından OnClosing olayında, boolean'ın yanlış olup olmadığını (x düğmesinin tıklandığını gösteren) görmek için bir kontrol yapın.

Bununla ilgili tek sorun, kendini boole ayarladığınız gerçeğidir. Bunun mümkün olup olmadığı, kullanıcının formunuzu kapatabileceği diğer yollara bağlıdır.

DÜZENLEME: Bunun, formun kapatılabileceği diğer yöntemlere çok bağlı olduğunu belirtmeliyim. Window.Close() öğesini çağırarak bu pencereyi kapatan bir çok yönteminiz varsa, boolean ayarını sizin için yapan UserClose() adında tek bir yöntem oluşturmayı düşünürüm.

public void UserClose() 
{ 
    NonXClose = true; 
    this.Close(); 
} 

Bu, dış kodun boolean ayarı ile pencereyi kapatmasına izin verir.() WM_CLOSE penceresine göndermek neden olur

window.close:

3

fark şudur.

Alt + F4 ve X düğmesi, SC_CLOSE türüne sahip WM_SYSCOMMAND iletisine neden olur. Bu iletiyi daha ayrıntılı olarak yönlendirmek isteyip istemediğinize (ve sonuçta WM_CLOSE) karar verebilirsiniz.

Look for my answer with code example here

İlgili konular