我正在使用Windows窗体上的几个控件编写一个简单的应用程序。我需要根据文本框和列表框的状态监视按钮的状态(启用/禁用)。
例如,当列表框为空时,将禁用“删除”,“全部删除”和“编辑”按钮,或者当文本框或列表框为空时,按钮“前进”将被禁用,依此类推。
所以,我把这些属性的更改放在Application.Idle
事件上,所以它是这样的:
private void MainForm_Load(object sender, EventArgs e)
{
Application.Idle += new EventHandler(Application_Idle);
}
public void Application_Idle(object sender, EventArgs e)
{
CheckFillingFields(forwardBtn);
CheckFillingList(deleteBtn);
CheckFillingList(deleteAllBtn);
CheckFillingList(editBtn);
}
private void CheckFillingFields(object sender)
{
if (questionTxt.Text == "" || answersLst.Items.Count == 0)
(sender as Button).Enabled = false;
else
(sender as Button).Enabled = true;
}
private void CheckFillingList(object sender)
{
if (answersLst.Items.Count == 0)
(sender as Button).Enabled = false;
else
(sender as Button).Enabled = true;
}
所以,问题是 - 在这种情况下使用Application.Idle
是否可以接受?或者我应该使这些属性可靠的用户操作? (例如,当用户从列表框中删除某个项目时,我应该检查它是否是最后一个项目,并禁用相应的按钮。)
非常感谢,我真的很感谢你的帮助!
答案 0 :(得分:2)
简单的答案是,是的,空闲检查很糟糕,您应该重新检查控件的状态,而不是“只要有可能”。