我可以将方法分配给多个基于表单的事件吗?

我正在构造一个Form,它具有几个numericUpDown控件,几个复选框控件和一些文本框等.每个控件都有一个事件方法(CheckedChanged,ValueChanged等),该方法被触发以执行某项操作,但我的主要问题是:

我想做的是运行一个方法,该方法将更新表单上的文本字段,但是目前我只重复了24次.这可行,但是我觉得必须有更好的方法.下面是到目前为止的示例.

    private void button3_Click(object sender, EventArgs e)
    {
    // Code Specific to the Buton3_Click
    UpdateTextLabel();
    }
    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
    // Code Specific to the checkBox1_CheckChanged
    UpdateTextLabel();
    }
    private void numericUpDown1_ValueChanged(object sender, EventArgs e)
    {
    // numericUpDown1 specific code ....
    UpdateTextLabel();
    }
    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
    // comboBox1 specific stuff ...
    UpdateTextLabel();
    }
   // .... and so on for every method ....

有没有更好的方法来实现这一目标?我想说“如果单击或更改了任何控件,请执行此“ UpdateTextLabel()”事情“,但不确定如何进行.很高兴能直接回答这个问题,因为我在搜索中输入的问题似乎不是“正确的问题” …

谢谢!

解决方法:

是的,您不想编写这样的代码.您不必一定要使用Application.Idle事件来更新UI状态.它在Winforms从消息队列中检索所有未决消息后每次运行.因此可以保证在您当前订阅的任何事件之后运行.使它看起来像这样:

    public Form1() {
        InitializeComponent();
        Application.Idle += UpdateTextLabel;
        this.FormClosed += delegate { Application.Idle -= UpdateTextLabel; };
    }

    void UpdateTextLabel(object sender, EventArgs e) {
        // etc..
    }
上一篇:CodeGo.net>如何检查分配了哪个事件?


下一篇:Java-多线程并发之锁原理