C# 挂起应用程序上的控件属性。空闲,好还是坏?

C# 挂起应用程序上的控件属性。空闲,好还是坏?,c#,winforms,C#,Winforms,我正在编写一个简单的应用程序,在Windows窗体上有几个控件。我需要根据文本框和列表框的状态监控按钮的状态(启用/禁用) 例如,当列表框为空时,按钮Delete、Delete All和Edit将被禁用,或者当文本框或列表框为空时,按钮Forward将被禁用,等等 因此,我将这些属性的更改放在Application.Idle事件上,结果如下: private void MainForm_Load(object sender, EventArgs e) { Appl

我正在编写一个简单的应用程序,在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
是否可以接受?或者我应该让这些属性在用户操作上可靠吗?(例如,当用户从列表框中删除一个项目时,我应该检查它是否是最后一个项目,并禁用相应的按钮。)


提前非常感谢,我真的很感谢你的帮助

简单的答案是,是的,空闲检查不好,您应该重新检查控件更改事件的状态,而不是“只要可能”。

我明白了。谢谢你的回答!