Nasıl Alt + F4 kapanış formu devre dışı bırakma?

oy
63

Devre dışı bırakmak için en iyi yolu nedir Alt+ F4formunu kapatmasını önlemek için bunu bir c # kazanmak biçiminde?

Ben bir ilerleme çubuğu görüntülemek için bir pop-up diyalog olarak bir form kullanıyorum ve kullanıcı kapatmak mümkün istemiyoruz.

Oluştur 18/08/2008 saat 16:16
kaynak kullanıcı
Diğer dillerde...                            


12 cevaplar

oy
12

Sen ele verebilir FormClosingolayı ve set FormClosingEventArgs.Canceliçin true.

Cevap 18/08/2008 saat 16:20
kaynak kullanıcı

oy
88

Bu işi yapar:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    e.Cancel = true;
}

Düzenleme: pix0rs endişe yanıt olarak - evet programlama yoluyla uygulamayı kapatmak mümkün olmayacaktır doğrudur. Ancak, sadece formu kapatmadan önce form_closing olay için olay işleyicisi kaldırabilirsiniz:

this.FormClosing -= new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing);
this.Close();
Cevap 18/08/2008 saat 16:27
kaynak kullanıcı

oy
0

[Alt] + [F4] basıldığında ise değil klavye tampon sorguya olabilir FormClosing olay işleyicisi içinde değilse devam doğruysa iptal se (hatta bu erişime? Var)?

Cevap 18/08/2008 saat 16:38
kaynak kullanıcı

oy
2

FormClosing programlama yoluyla penceresini kapatmadan yaparken bile çağrılacak misiniz? Eğer öyleyse bunun (yerine hep iptal işlemi) ile bittiğinde, muhtemelen formu kapatılacak izin vermek için bazı kodlar eklemek istiyoruz

Cevap 18/08/2008 saat 16:46
kaynak kullanıcı

oy
14

tamamen kapatmasını kendisini engellemek için bir uygulama için kötü formu olarak kabul edilir unutmayın. Eğer uygulama kapatmak istendi nasıl ve neden belirlemek için Kapanış olayı için olay argümanları kontrol etmelidir. çünkü Windows kapatma ise, bunun olmasını yakın engellememelidir.

Cevap 18/08/2008 saat 20:19
kaynak kullanıcı

oy
11

Ben bir ilerleme çubuğu görüntülemek için bir pop-up diyalog olarak bir form kullanıyorum ve kullanıcı kapatmak mümkün istemiyoruz.

Kullanıcı, alt + f4 tuşlarına için yeterli uygulamanızı kapatmak için kararlı (ve bilgili) ise büyük olasılıkla da görev yöneticisini çalıştırmak ve bunun yerine uygulamayı öldürecek kadar bilgili olacak.

alt + f4 ile En azından uygulama sadece insanların onu öldürmek yapılmasından ziyade, düzgün biçimde kapatma yapabilirsiniz. Deneyim, uygulamanızı öldürme bozuk yapılandırma dosyaları, kırık veritabanları, yarım kalmış işleri sen devam edemez, ve birçok diğer ağrılı şeyleri ifade eder.

ziyade önlenmesi dışarı düz 'Emin misin' ile En azından onları teşvik.

Cevap 18/08/2008 saat 20:25
kaynak kullanıcı

oy
50

@TK

Eğer değerine bakarsak FormClosingEventArgs e.CloseReasonformu kapatılıyor neden o size söyleyecektir. Daha sonra ne yapacağına karar olabilir, Olası değerler şunlardır:

Üye adı - Açıklama


Yok - kapanması nedeni tanımlanmadı veya belirlenemedi.

WindowsShutDown - İşletim sistemi kapatmadan önce tüm uygulamaları kapatıyor.

MdiFormClosing - Bu çoklu belge arayüzü üst formu (MDI) bir şekilde kapanmaktadır.

UserClosing - Kullanıcı, form penceresinde Kapat düğmesini tıklayarak pencerenin kontrol menüsünden Kapat seçerek veya tuşuna basarak örneğin, kullanıcı arabirimi (UI) aracılığıyla formunu kapatıyor ALT+ F4.

TaskManagerClosing - Microsoft Windows Görev Yöneticisi uygulaması kapatıyor.

FormOwnerClosing - sahibi formu kapatıyor.

ApplicationExitCall - Uygulama sınıfının Çık yöntemi çağrıldı.

Cevap 08/09/2008 saat 08:10
kaynak kullanıcı

oy
22

Ben bunu yapmak için doğru yolu olduğuna inanıyorum:

protected override void OnFormClosing(FormClosingEventArgs e)
{
  switch (e.CloseReason)
  {
    case CloseReason.UserClosing:
      e.Cancel = true;
      break;
  }

  base.OnFormClosing(e);
}
Cevap 09/01/2009 saat 12:17
kaynak kullanıcı

oy
2

FormClosing olayı Abone

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    e.Cancel = e.CloseReason == CloseReason.UserClosing;
}

Sadece bir yöntem olarak içinde bir hat.

Cevap 05/03/2013 saat 02:45
kaynak kullanıcı

oy
-2

Formun kurucusundaki aşağıdaki kullanarak formda kapatma düğmesini gizle:

this.ControlBox = false;
Cevap 19/06/2016 saat 15:09
kaynak kullanıcı

oy
2

Bu benim için% 100 çalışıyor o ALT + F4 devre dışı bırakmak için var

    private void test_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (test.ModifierKeys == Keys.Alt || test.ModifierKeys == Keys.F4) 
        { 
            e.Cancel = true; 
        }    
    }
Cevap 16/11/2017 saat 11:53
kaynak kullanıcı

oy
1

Bu işi yapar:

bool myButtonWasClicked = false;
private void Exit_Click(object sender, EventArgs e)
{
  myButtonWasClicked = true;
  Application.Exit();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
  if (myButtonWasClicked)
  {
    e.Cancel = false;
  }
  else
  {
    e.Cancel = true;
  }


}
Cevap 30/05/2018 saat 23:57
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more