【问题标题】:Hanging controls properties on Application.Idle, good or bad?在 Application.Idle 上悬挂控件属性,好还是坏?
【发布时间】: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 是否可以接受?或者我应该使这些属性依赖于用户操作? (例如,当用户从列表框中删除一个项目时,我应该检查它是否是最后一个,并禁用相应的按钮。)

提前非常感谢,非常感谢您的帮助!

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

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

    【讨论】:

    • 我明白了。感谢您的回答!
    猜你喜欢
    • 1970-01-01
    • 2012-01-03
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 2011-07-28
    • 2014-07-23
    相关资源
    最近更新 更多