【发布时间】:2017-04-18 05:42:55
【问题描述】:
我正在编写一个简单的应用程序,在 Windows 窗体上包含多个控件。我需要根据文本框和列表框的状态来监控按钮的状态(启用/禁用)。
例如,当列表框为空时,Delete、Delete All 和 Edit 按钮将被禁用,或者当文本框或列表框为空时,Forward 按钮将被禁用,等等。
所以,我将这些属性的更改放在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 是否可以接受?或者我应该使这些属性依赖于用户操作? (例如,当用户从列表框中删除一个项目时,我应该检查它是否是最后一个,并禁用相应的按钮。)
提前非常感谢,非常感谢您的帮助!
【问题讨论】: