gpt4 book ai didi

c# - InvokeRequired 和 ToolStripStatusLabel

转载 作者:太空狗 更新时间:2023-10-29 21:13:39 24 4
gpt4 key购买 nike

在我的应用程序中,我有一个负责所有数据库操作的类。它从主类调用,并在操作完成后使用委托(delegate)调用方法。因为它是异步的,所以我必须在我的 GUI 上使用 invoke,所以我创建了一个简单的扩展方法:

 public static void InvokeIfRequired<T>(this T c, Action<T> action)
where T: Control
{
if (c.InvokeRequired)
{
c.Invoke(new Action(() => action(c)));
}
else
{
action(c);
}
}

当我尝试在 textBox 上调用它时,它工作正常:

textBox1.InvokeIfRequired(c => { c.Text = "it works!"; });

但是当我尝试在 ToolStripStatusLabel 或 ToolStripProgressBar 上调用它时,出现错误:

The type 'System.Windows.Forms.ToolStripStatusLabel' cannot be used as type parameter 'T' in the generic type or method 'SimpleApp.Helpers.InvokeIfRequired(T, System.Action)'. There is no implicit reference conversion from 'System.Windows.Forms.ToolStripStatusLabel' to 'System.Windows.Forms.Control'.

我知道这可能是一个简单的修复,但我可以处理:/

最佳答案

这是因为 ToolStripItem(导致错误的那两个的基础)是一个组件而不是一个控件。尝试在拥有它们的工具条上调用您的扩展方法并调整您的委托(delegate)方法。

关于c# - InvokeRequired 和 ToolStripStatusLabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12419217/

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