gpt4 book ai didi

.net - 如何对 ToolStripStatusLabel 进行跨线程调用?

转载 作者:行者123 更新时间:2023-12-03 14:39:05 24 4
gpt4 key购买 nike

我倾向于在大多数应用程序的底部使用 StatusStrip 来进行简单的状态更新,偶尔还会使用进度条。

但是,ToolStripStatusLabels 似乎没有从控件继承,因此它们没有 .Invoke 或 .InvokeRequired。那么我将如何线程安全地调用以更改它的文本属性?

为后代和其他来搜索的人编码的答案:

Action<string> test=(text) =>
{
if (this._statusStrip.InvokeRequired) this._statusStrip.Invoke(
new MethodInvoker(() => this._lblStatus.Text = text));
else this._lblStatus.Text = text;
};

或者
private void TestInvoker(string text)
{
if (this._statusStrip.InvokeRequired)
this._statusStrip.Invoke(
new MethodInvoker(() => this._lblStatus.Text = text));
else this._lblStatus.Text = text;
}

最佳答案

这是一个很好的问题!

虽然 ToolStripStatusLabel不继承自控件,包含 ToolStrip做!使用包含 ToolStrip的 Invoke 调用 ToolStripStatusLabel .

这是因为 ToolStrip 手动处理其组件位的绘制,这与 WPF 管理其所有组件位的绘制非常相似,而不为每个组件生成单独的句柄。这很有用,因为很容易忘记每个 Control有一个关联的 HANDLE并且系统只有有限数量的人可以分发,例如。

(我之前也遇到过这个问题。例如,我在 another question 的侧边栏中提到了它。我应该更新该文本以反射(reflect)我最近的理解。)

关于.net - 如何对 ToolStripStatusLabel 进行跨线程调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1127973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com