C# 禁用按钮,直到txtBox有效#

C# 禁用按钮,直到txtBox有效#,c#,winforms,C#,Winforms,我希望禁用“提交”按钮,直到两个文本框中有一个值为止。我不知道该怎么办 由于这是WinForms,您应该监视文本框上的TextChanged事件,并调用一个方法来更新按钮的启用状态(这里很有用) 下面的示例显示了一种简单的情况,在启用按钮之前,您希望文本框中包含内容 private void OnTextChanged(object sender, EventArgs args) { UpdateUserInterface(); } private void UpdateUserInt

我希望禁用“提交”按钮,直到两个文本框中有一个值为止。我不知道该怎么办

由于这是WinForms,您应该监视文本框上的
TextChanged
事件,并调用一个方法来更新按钮的启用状态(这里很有用)

下面的示例显示了一种简单的情况,在启用按钮之前,您希望文本框中包含内容

private void OnTextChanged(object sender, EventArgs args)
{
    UpdateUserInterface();
}

private void UpdateUserInterface()
{
    this.myButton.Enabled = !string.IsNullOrWhiteSpace(this.textBox1.Text) &&
                            !string.IsNullOrWhiteSpace(this.textBox2.Text);
}
如果你想做更复杂和费时的事情来确定启用状态,你可能想考虑一些延迟按钮状态更新,直到打字完成。例如,一个具有小间隔的计时器,每次触发
TextChanged
事件时都会重新启动,并在其自己的
Tick
事件处理程序中停止,您最终在该处理程序中调用
UpdateUserInterface
方法

旁注
由于了解到这是一个WinForms应用程序,我将以下几点放在了搜索此信息的旁注中

对于WPF,您可以使用类似的方法,或者使用一些巧妙的绑定和适当的值转换器。不过我建议保持简单

对于ASP.NET,这可以通过javascript在客户端完成—附加到文本框的
onChange
事件并测试两者的值*


**感谢您提供的额外信息。*

由于这是WinForms,您应该监视文本框上的
TextChanged
事件,并调用一个方法来更新按钮的启用状态(这里很有用)

下面的示例显示了一种简单的情况,在启用按钮之前,您希望文本框中包含内容

private void OnTextChanged(object sender, EventArgs args)
{
    UpdateUserInterface();
}

private void UpdateUserInterface()
{
    this.myButton.Enabled = !string.IsNullOrWhiteSpace(this.textBox1.Text) &&
                            !string.IsNullOrWhiteSpace(this.textBox2.Text);
}
如果你想做更复杂和费时的事情来确定启用状态,你可能想考虑一些延迟按钮状态更新,直到打字完成。例如,一个具有小间隔的计时器,每次触发
TextChanged
事件时都会重新启动,并在其自己的
Tick
事件处理程序中停止,您最终在该处理程序中调用
UpdateUserInterface
方法

旁注
由于了解到这是一个WinForms应用程序,我将以下几点放在了搜索此信息的旁注中

对于WPF,您可以使用类似的方法,或者使用一些巧妙的绑定和适当的值转换器。不过我建议保持简单

对于ASP.NET,这可以通过javascript在客户端完成—附加到文本框的
onChange
事件并测试两者的值*


**感谢您提供的额外信息。*

在Winfoems或WPF中,使用单个处理程序钩住两个文本框的TextChanged事件。在该处理程序中,查看两个文本框的当前文本(但不要深入太深,因为每次击键都会触发事件,因此深入验证将减慢UI响应),如果文本不是空的或只有空白,则启用按钮;否则,禁用它


在ASP.NET中,您需要使用JavaScript。DOM中的文本框有一个类似的OnChanged事件,您可以为其分配一个Javascript函数,该函数将执行与WinForms中类似的任务。要小心,因为浏览器可以在禁用JavaScript的情况下运行,所以您仍然需要在服务器端检查null,并确保默认情况下未禁用该按钮(仅由JavaScript禁用,使用OnChanged函数或在文档加载时运行的某个功能)。

在Winfoems或WPF中,使用单个处理程序钩住两个文本框的TextChanged事件。在该处理程序中,查看两个文本框的当前文本(但不要深入太深,因为每次击键都会触发事件,因此深入验证将减慢UI响应),如果文本不是空的或只有空白,则启用按钮;否则,禁用它


在ASP.NET中,您需要使用JavaScript。DOM中的文本框有一个类似的OnChanged事件,您可以为其分配一个Javascript函数,该函数将执行与WinForms中类似的任务。要小心,因为浏览器可以在禁用JavaScript的情况下运行,所以您仍然需要在服务器端检查null,并确保默认情况下按钮未被禁用(仅由JavaScript禁用,使用OnChanged函数或在文档加载时运行的某个功能)。

WinForms?ASP.NET?还有别的吗?WinForms?ASP.NET?还有什么?在asp.net中,这可以通过javascript在客户端完成—附加到文本框的
onChange
事件并测试两者的值。在asp.net中,这可以通过javascript在客户端完成—附加到文本框的
onChange
事件并测试两者的值。