使用 Invoke 从另一个线程获取 tabControl SelectedTab

Get tabControl SelectedTab From Another Thread Using Invoke

我尝试了几种不同的方法来实现这一点,其中 none 行得通。我需要获取 tabControl1.SelectedTab.Name 的值。如果我尝试以下代码:

string name = tabControl1.SelectedTab.Name;

我收到一个错误,提示我无法从另一个线程访问对象。所以现在我正在尝试使用 Invoke 来检索值。以下是我在网上找到并尝试过的一种方法。

string name = tabControl1.Invoke((MethodInvoker)delegate { Text = tabControl1.SelectedTab.Name; })).ToString();

这给出了错误,未将对象引用设置为对象的实例。我尝试了一些其他方法,但结果为空。

我尝试在 SO 中搜索此问题的答案,但找不到任何有效的方法。如果有人能给我指明正确的方向,我将不胜感激。谢谢!

我认为您正在尝试执行以下操作:

string tab = (string)this.Invoke(new Func<string>(() => controlTab1.SelectedTab.Name));

这将 return 来自 UI 线程的 SelectedTab 的名称。问候。