我创建了一个带有多个面板的表单,并且使用面板控件显示相关信息。第三面板有20个文本框,我想检查是否所有细节都已填写。所以我在下面简单地使用了这段代码。
private void Calculatebutton_Click(object sender, EventArgs e)
{
foreach(Control c in Controls)
{
if(c is TextBox)
{
Console.Beep();
if (!String.IsNullOrWhiteSpace(textbox.Text) &&
!String.IsNullOrEmpty(textbox.Text))
{
SaveToDatabaseButton.Enabled = true;
}
}
}
}
问题是if语句中的条件变为假,我听不到任何蜂鸣声或启用了其他按钮。如果我从“ c is TextBox”更改为“ c is Panel”,我会听到三声提示音。我也尝试过这样的代码
if(c is TextBox)
{
c.Text = " ";
}
但是没有任何作用。请帮助我克服这个问题。提前致谢。
我测试了您的代码,它发出提示音就好了,请考虑艾哈迈德关于文本框在另一个容器或表单中的注释。
与您的问题没有直接关系,但是据我所知,何时启用按钮的逻辑是不正确的,因为我假设只有一个文本框不为空就足以使按钮保存到数据库中您希望所有文本框都不为空。
如果是这种情况,我会建议这样的事情:
private void Calculatebutton_Click(object sender, EventArgs e)
{
var isThereEmptyTextBox = false;
foreach(Control c in Controls)
{
if(c is TextBox)
{
Console.Beep();
if (!String.IsNullOrWhiteSpace(textbox.Text) &&
!String.IsNullOrEmpty(textbox.Text))
{
isThereEmptyTextBox = true;
}
}
}
SaveToDatabaseButton.Enabled = !isThereEmptyTextBox;
}
只要一个文本框为空,该标志就会被设置为true,并且无论是否出现更多的空文本框,该标志都会保持这种状态,然后您使用该标志来启用/禁用该按钮。