我正在Visual Studio中设计一个程序 - Windows Forms c#.net框架,用于记录玩家标签和高分参赛者参加游戏比赛。我有一个文本框供用户输入玩家代号,还有一个文本框供用户输入高分,然后有一个按钮将玩家代号和高分记录到单独的两个列表中。
我遇到的问题是禁用按钮,直到玩家代号和高分字段中都有一些文本。这对你们中的很多人来说很容易,但我不确定如何编写代码来实现这一目标,我将展示我所拥有的:
所以在初始化组件时,我有以下内容:
{
btnAdd.Enabled = !string.IsNullOrEmpty(txtHighScore.Text);
btnAdd.Enabled = !string.IsNullOrEmpty(txtUsername.Text);
}
按钮在程序启动后立即被禁用,直到输入文本。
再往下,我在每个文本框的"文本更改"部分都有代码
private void txtHighScore_TextChanged(object sender, EventArgs e)
{
btnAdd.Enabled = !string.IsNullOrEmpty(txtHighScore.Text);
}
private void txtGamertag_TextChanged(object sender, EventArgs e)
{
btnAdd.Enabled = !string.IsNullOrEmpty(txtGamertag.Text);
}
通过阅读本文,您将看到如果在任一框中输入文本,该按钮将被启用,但我只希望在文本成功输入到两个字段中时才启用它。
您可以将文本框TextChanged
事件都设置为称为DataChanged
的方法(您可以选择您喜欢的名称(
private void DataChanged(object sender, EventArgs e)
{
btnAdd.Enabled = !string.IsNullOrWhiteSpace(txtHighScore.Text)
&& !string.IsNullOrWhiteSpace(txtGamertag.Text);
}
如您所见,您必须同时使用这两个检查才能启用按钮,为此您可以利用&&
这意味着和。
当然,您可以使用相同的命令编写两个事件,但是对两个事件仅使用一种方法可以清楚地表明您正在做什么,并且代码中只有一个点可以在必要时进行更改,因此代码更易于维护。
您的代码不起作用,因为您一次只使用一个文本框启用/禁用按钮。