调用表单控件(比我更好)

时间:2015-07-22 20:00:20

标签: c#

我需要调用我的Windows窗体控件,因为它们位于另一个线程上。我需要检查哪一个是焦点,但我有一种奇怪的感觉,我的代码可以简单10000倍。有人可以找我,告诉我我做错了什么。代码有效。但它只是感觉很讨厌。希望收到你的来信。

我的调用类(从另一个stackoverflow问题得到这个,所以不是我的):

    using System;
using System.ComponentModel;

namespace System {
    public static class ISynchronizeInvokeExtensions {
        public static void InvokeEx<T>(this T @this, Action<T> action) where T : ISynchronizeInvoke {
            if (@this.InvokeRequired) {
                @this.Invoke(action, new object[] { @this });
            } else {
                action(@this);
            }
        }
    }
}

我的代码检查焦点:

private bool test; 
private void setText(string text) {
            this.InvokeEx(x => test = x.textBox1.Focused);
            if (test) {
                this.InvokeEx(x => x.textBox1.Text = text);
            }
            this.InvokeEx(x => test = x.textBox2.Focused);
            if (test) {
                this.InvokeEx(x => x.textBox2.Text = text);
            }
            this.InvokeEx(x => test = x.textBox3.Focused);
            if (test) {
                this.InvokeEx(x => x.textBox3.Text = text);
            }
            this.InvokeEx(x => test = x.textBox4.Focused);
            if (test) {
                this.InvokeEx(x => x.textBox4.Text = text);
            }
            this.InvokeEx(x => test = x.textBox5.Focused);
            if (test) {
                this.InvokeEx(x => x.textBox5.Text = text);
            }
            this.InvokeEx(x => test = x.textBox6.Focused);
            if (test) {
                this.InvokeEx(x => x.textBox6.Text = text);
            }
            this.InvokeEx(x => test = x.textBox7.Focused);
            if (test) {
                this.InvokeEx(x => x.textBox7.Text = text);
            }
        }

0 个答案:

没有答案