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

标签 c# multithreading winforms invoke

我尝试了几种不同的方法来实现这一点,但都没有奏效。我需要获取 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));

这将从 UI 线程返回 SelectedTab 的名称。问候。

关于c# - 使用 Invoke 从另一个线程获取 tabControl SelectedTab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42289188/

相关文章:

c# - 用户名不能包含空值

vb.net - 条码解析

c# - 在多线程应用程序中同步属性值的正确方法

java - 如何在 Javafx 的 initialize() 方法期间在后台加载大文件?

C# Winform 桌面图标拒绝在特定计算机上更改

windows - 如何为 Windows 创建自定义用户界面?

c# - .NET 和 T-SQL 之间的字符串比较差异?

c# - 无法将 mysql 服务器连接到 Visual Studio

c# - 添加自定义声明在 ASP.NET Core Identity 中不起作用

java - 所有这些默认线程都应该运行吗?它们能让我的 JVM 保持活力吗?