Mis*_*siu 6 c# invokerequired .net-3.5 winforms
在我的应用程序中,我有一个负责所有数据库操作的类.它从主类调用,并在动作完成后使用委托调用方法.因为它是异步的,我必须在我的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);
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试在textBox上调用它时,这工作正常:
textBox1.InvokeIfRequired(c => { c.Text = "it works!"; });
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在ToolStripStatusLabel或ToolStripProgressBar上调用它时,我收到一个错误:
类型'System.Windows.Forms.ToolStripStatusLabel'不能在泛型类型或方法'SimpleApp.Helpers.InvokeIfRequired(T,System.Action)'中用作类型参数'T'.没有从'System.Windows.Forms.ToolStripStatusLabel'到'System.Windows.Forms.Control'的隐式引用转换.
我知道这可能是一个简单的修复,但我只能处理它:/
这是因为ToolStripItem(导致错误的两个基础)是Component而不是Control.尝试在拥有它们的工具条上调用扩展方法并调整委托方法.
| 归档时间: |
|
| 查看次数: |
6545 次 |
| 最近记录: |