添加的文本不是在.NET TextBox中设置的

时间:2013-05-05 21:04:49

标签: c# winforms event-handling

这是我的LostFocus事件处理程序:

    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时,文本仍为空。这怎么可能是正确的?!

2 个答案:

答案 0 :(得分: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"
}

希望这有帮助!

答案 1 :(得分:0)

尝试使用此代码 private void txtThrow_LostFocus_TextChanged(object sender,System.EventArgs e) {

TextBox source = (TextBox)sender;

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

}