好吧,我正在编写一个对字符串、标签、链接标签、类等有用的扩展/方法文件。
但是,我有一个问题。我有一个更改标签文本的 showMessage()
方法,效果很好。但我决定使用线程执行来做到这一点,然后我这样做:
namespace LabelExtensions
{
public static class LabelExtensionsClass
{
private delegate void UpdateState();
public static void ShowMessage(this Label label, string text)
{
if (label.InvokeRequired)
{
label.Invoke((UpdateState)delegate
{
label.Text = text;
});
}
else
{
label.Text = text;
}
}
}
}
抱歉,打错了。我在论坛上输入了这段代码。 错误继续。
根据documentation ,要使用 Invoke 方法需要导入:
命名空间:System.Windows.Forms
程序集:System.Windows.Forms(在 System.Windows.Forms.dll 中)
然后我做了:
using System.Windows.Forms;
但这会返回同样的错误:
The name 'Invoke' does not exist in the current context
我该如何解决这个问题?
提前致谢。
最佳答案
为什么不这样做:
label.BeginInvoke( (Action) (() => label.Text = text));
无需创建自己的委托(delegate)。只需使用内置的 Action代表。您可能应该为基础 Control 创建扩展方法类而不是标签类。它将更易于重用。
关于c# - 如何在扩展/方法文件中使用 Invoke 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8537257/