Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为TextBox控件引发了哪些验证事件?_C#_.net_Winforms_Validation_Textbox - Fatal编程技术网

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

C# 为TextBox控件引发了哪些验证事件?,c#,.net,winforms,validation,textbox,C#,.net,Winforms,Validation,Textbox,当文本框的值从代码和平状态更改时,当文本框被验证或失去焦点且按键时未触发事件时,是否有任何事件触发,因为我有很多计算,不可能在每次按键时都这样做,所以您可以使用LostFocus或Validated events。您可以使用LostFocus或Validated events 用于更改文本。 用于文本框失去焦点时。 使用或用于验证。 以下是TextBox调用事件的顺序: // Reference : http://msdn.microsoft.com/en-us/library/system.w

当文本框的值从代码和平状态更改时,当文本框被验证或失去焦点且按键时未触发事件时,是否有任何事件触发,因为我有很多计算,不可能在每次按键时都这样做,所以您可以使用LostFocus或Validated events。

您可以使用LostFocus或Validated events

用于更改文本。 用于文本框失去焦点时。 使用或用于验证。 以下是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
这将帮助您决定将代码放在何处

用于更改文本。 用于文本框失去焦点时。 使用或用于验证。 以下是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

这将有助于您决定将代码放在何处。

当文本框的值通过代码以编程方式更改时,没有任何事件可以满足您的要求,但当用户在文本框中键入文本时,则不会。TextChanged事件将以任何一种方式引发这是相当直观的文本值正在更改,而计算机不知道或不关心更改它的原因。正如本次事件的结果所示:

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

如果在代码中将文本添加到文本框时需要运行自定义验证逻辑,则需要自己调用包含验证逻辑的任何方法。将其提取到一个单独的方法中,从验证/验证事件处理程序和代码中设置textbox的Text属性的所有位置调用该方法


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

当文本框的值通过代码以编程方式更改时,没有任何事件可以满足您的要求,但当用户在文本框中键入文本时,则不会。TextChanged事件将以任何一种方式引发这是相当直观的文本值正在更改,而计算机不知道或不关心更改它的原因。正如本次事件的结果所示:

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

如果在代码中将文本添加到文本框时需要运行自定义验证逻辑,则需要自己调用包含验证逻辑的任何方法。将其提取到一个单独的方法中,从验证/验证事件处理程序和代码中设置textbox的Text属性的所有位置调用该方法

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

使用成员变量

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.
}
使用成员变量

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.
}

我已经尝试过验证、验证、textchange、按键、lostfocus验证和验证,当使用textbox.text=更改textbox值时,lostfocus不会被触发,并且每次更改按键时都会触发textchanged,并粘贴任何其他事件……。我在下面详细介绍了这一点。您需要将验证代码放入一个单独的方法中,从验证或验证事件调用该方法来处理文本框失去焦点的情况,以及从代码中设置文本属性的任何位置调用该方法。有什么原因不适合您吗?@Cody Gray当文本属性设置为单词和词组同时或除此之外时,不会触发验证事件。请再次阅读我所说的:您需要将验证代码放入一个单独的方法中,您可以从验证或验证事件调用该方法来处理文本框失去焦点的情况,也可以从您在代码中设置文本属性的任何位置调用该方法。我没有声明在设置Text属性时触发了这两个事件。下面我的回答将更详细地介绍这一点。你读过了吗?@Cody Gray抱歉,在回复之前我错过了你的答案,现在你的观点对我来说已经很清楚了。对于帮助,我已经尝试在设置text属性时启动已验证的事件,但问题是该属性在多个地方发生了更改,我的代码中有很多重复,这就是我为什么要研究此事件的原因请注意,我有350个文本框,每个文本框都从至少5个位置更改。我已经尝试过验证、验证、文本更改、按键,使用textbox.text=更改textbox值时,lostfocus Validating and validated和lostfocus不会触发,并且每次更改按键时都会触发textchanged并粘贴任何其他事件……我在下文中对此进行了详细说明。您需要将验证代码放入sepa
rate方法,您可以从验证或已验证事件调用该方法来处理文本框失去焦点的情况,也可以从您在代码中设置文本属性的任何位置调用该方法。有什么原因不适合您吗?@Cody Gray当文本属性设置为单词和词组同时或除此之外时,不会触发验证事件。请再次阅读我所说的:您需要将验证代码放入一个单独的方法中,您可以从验证或验证事件调用该方法来处理文本框失去焦点的情况,也可以从您在代码中设置文本属性的任何位置调用该方法。我没有声明在设置Text属性时触发了这两个事件。下面我的回答将更详细地介绍这一点。你读过了吗?@Cody Gray抱歉,在回复之前我错过了你的答案,现在你的观点对我来说已经很清楚了。对于帮助,我已经尝试在设置text属性时启动已验证的事件,但问题是该属性在多个地方发生了更改,我的代码中有很多重复,这就是我为什么要研究此事件的原因请注意,我有350个文本框,每个文本框至少从5个位置更改。这个答案与案例相反。这个答案与案例相反