我需要调用我的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);
}
}