2013-07-01 14 views

cevap

6

Formdaki OnFormClosing yöntemini geçersiz kılmanız ve formun kapatıldığını bildiren bir bayrak ayarlamanız gerekir. Daha sonra, doğrulama yaparken, önce bayrağı kontrol edin.

base çağırmadan önce bayrağını ayarlamayı unutmayın

.

protected override void OnFormClosing(FormClosingEventArgs e) 
{ 
    _isClosing = true; 

    base.OnFormClosing(e); 
} 
+0

Bunu denemek istiyorum, ama geçersiz kılan bu olayı nasıl atadığımı, _isClosing doğrulamaya ihtiyacım olan düzdür? –

+0

@ JoséGordilloLópez, lütfen güncellememi görün ('sanal' değerini 'geçersiz kıl' olarak değiştirdim). Ayrıca, '_isClosing', 'özel bool _isClosing' sınıf değişkeni olup, formun kapanacağını bilmesini sağlarsınız. Sonra 'Leave' olayında bunu yapacaksın, eğer (_isClosing) {return; Doğrulamayı iptal etmek için –

+0

teşekkürler, bu iş çok iyi ve kullanıcı geri kalanı için teşekkürler –

4

Metin kutusunun yükselmesiyle oluşan olayları kaldırmak bir yol olabilir. Doğrulama şeklinizden emin değilim, ancak özelliğinin FormClosing olayında yanlış olarak ayarlanmasını deneyebilirsiniz.

private void Form1_FormClosing(Object sender, FormClosingEventArgs e) 
{   
    myTextBox.Enabled = false; 
} 

Veya bunun yerine "bırakın" Olayın bunu başarmak için metin 's "valide" olayını kullanın Leave olay işleyicisi

private void Form1_FormClosing(Object sender, FormClosingEventArgs e) 
{  
    myTextBox.Leave -= myTextBox_Leave; 
} 
1

kaldırın.

Bu, kodunuzun form kapanmadan önce yürütülmesini sağlar ve tam olarak ihtiyacınız olanı gerçekleştirmelidir.

İlgili konular