2013-05-05 70 views
0

這是我LostFocus事件處理程序:文本添加的,而不是在.NET文本框被設置

private void txtThrow_LostFocus(object sender, System.EventArgs e) 
    { 
     TextBox source = (TextBox)sender; 

     if (source.Text == "") 
      source.Text = "0"; 
    } 

這實際上與txtThrow_KeyPress干擾,使我對以後做我的處理上我TextBox其接受到僅能容納一個字符,我發現它有兩個:我的這個零,你看到這裏!我想要做的就是保持txtThrow_KeyPress的原樣,但是每當用戶輸入什麼,我都想強制執行一個零。

我從這裏可以理解的是,txtThrow_LostFocustxtThrow_KeyPress完成其作業之前被觸發,因爲在時間txtThrow_LostFocus被觸發時,文本仍爲空。這怎麼可能是正確的?!

+1

你在KeyPress事件做什麼樣的處理? – 2013-05-05 21:19:53

+0

爲什麼這是相關的?我只是保留一些角色(並採取一些行動)並阻止其他人展示。 – OmarOthman 2013-05-05 21:59:08

+0

因爲你正在做的事情正在影響你的'LostFocus'事件,那麼'KeyPress'事件之後會觸發該事件。您可能想要嘗試「離開」事件,當文本框不再是主動控件時會觸發該事件。如果您在「KeyPress」事件中向我們展示您正在做的事情,它將幫助我們重現您的問題。 – 2013-05-05 22:11:41

回答

0

我會建議使用TextChanged事件而不是KeyPress事件。我假設文本框可能已經空了,並且用戶按下Backspace或者自然界中的某些東西。

每次在字段中更改文本時都觸發TextChanged事件。

當你用這種方式填充新的事件處理程序方法時,你擁有的代碼應該工作得很好。但是,您可能需要使用

private void txtThrow_LostFocus_TextChanged(object sender, System.EventArgs e) 
{ 

    TextBox source = (TextBox)sender; 

    if (source.Text == "" || source.Text == null) 
     source.Text = "0" 
} 

希望這有助於!

0

嘗試將此代碼 私人無效txtThrow_LostFocus_TextChanged(對象發件人,發送System.EventArgs){

TextBox source = (TextBox)sender; 

if (string.nullorempty(source.text) 
    source.Text = "0" 

}