进一步自动化调用必需的呼叫

时间:2018-09-06 21:03:07

标签: c# user-interface invoke

我正在使用两个扩展来处理UI元素上的调用命令,这些扩展适用于this thread等:

    public static void InvokeIfRequired(this Control control, Action<Control> action)
    {
        if (control.InvokeRequired)
            control.Invoke(new Action(() => action(control)));
        else
            action(control);
    }

    public static T InvokeIfRequired<T>(this Control control, Func<T> func) where T: IConvertible
    {
        if (control.InvokeRequired)
            return (T)Convert.ChangeType(control.Invoke(func), typeof(T));
        else
            return (T)Convert.ChangeType(func, typeof(T));
    }

这些工作符合预期

Button1.InvokeIfRequired(x => x.Enabled = false;
int newrow = DataGridView1.InvokeIfRequired(() => DataGridView1.Rows.Add());

当我需要从异步方法调用它们时。

但是,我想知道是否有一种方法可以进一步自动执行InvokeIfRequired方法-当我在控件上设置属性而不必在代码中显式调用InvokeIfRequired时,是否有一种方法可以触发InvokeIfRequired?

就像,如果我只是键入

Button1.Enabled = true;

有没有办法解决Set事件或control属性,以便在设置.Enabled属性时在后台调用InvokeIfRequired?还是我想把马车放到马前面,然后变得太聪明了?

0 个答案:

没有答案