为TextBox控件引发了哪些验证事件?

时间:2011-01-04 13:55:17

标签: c# .net winforms validation textbox

当文本框的值从代码的平衡发生变化以及文本框被验证或丢失焦点并且事件不在按键上触发时,是否有任何事件触发,因为我有很多计算并且每次按键都不可能这样做

4 个答案:

答案 0 :(得分:2)

以下是为TextBox调用事件的顺序:

// Reference : http://msdn.microsoft.com/en-us/library/system.windows.forms.control.validated.aspx
1) Enter  
2) GotFocus
3) Leave
4) Validating
5) Validated
6) LostFocus

这可以帮助您确定要放置代码的位置。

答案 1 :(得分:2)

当文本框的值通过代码以编程方式更改时,没有任何事件可以满足您的要求,但是当用户输入文本时TextChanged事件将以任一方式引发(这是相当直观的 - 文本值正在发生变化,计算机不知道或不关心负责更改它的内容)。由于此事件的documentation表示:

  

用户输入或将Text属性设置为新值会引发TextChanged事件。

如果在代码中向文本框添加文本时需要运行自定义验证逻辑,则需要自己调用包含验证逻辑的任何方法。将其解压缩为一个单独的方法,您可以从代码中设置文本框{{1}的所有位置的Validating / Validated事件处理程序调用该方法} property。

作为对已发布的其他答案的补充,我强烈建议您使用Validating(如果您希望能够取消验证)或Validated事件来处理文本框失去焦点,而不是更明显的名为LostFocus事件。

答案 2 :(得分:0)

您可以使用LostFocusValidated个活动。

答案 3 :(得分:0)

使用成员变量。

private bool _changeByCode;


public void DoSomeChanges()
{
    _changeByCode = true;
    textbox1.Text = "Hello";
    _changeByCode = false;
}

public void Textbox1_Change(object source, EventArgs e)
{
    if (_changeByCode)
        return;

     //do your validation here.
}