gpt4 book ai didi

c# - 调用 ToolStripMenuItem

转载 作者:可可西里 更新时间:2023-11-01 08:35:18 25 4
gpt4 key购买 nike

我正在尝试找出是否有调用 ToolStripMenuItem 的方法。

例如,我在返回结果时调用 Web 服务(异步)。我根据结果填充下拉项,(在回调方法中)

 ToolStripMenuItem.DropDownItems.Add(new ToolStripItemEx("start"));

但是我遇到了异常

跨线程操作无效:控件“”从创建它的线程以外的线程访问。

没有与工具条项关联的调用函数, 还有其他方法可以做到这一点吗?我是否试图以完全错误的方式做到这一点?任何输入都会有所帮助。

最佳答案

您正试图在另一个线程中执行依赖控制主线程的代码,您应该使用Invoke 方法调用它:

toolStrip.Invoke(() =>
{
toolStrip.DropDownItems.Add(new ToolStripItemEx("start"));
});

当从不同于最初创建控件的线程访问控件成员/方法时,您应该使用 control.Invoke 方法,它将在调用委托(delegate)中编码执行主线程。

编辑:由于您使用的是 ToolStripMenuItem 而不是 ToolStrip,因此 ToolStripMenuItem 没有 Invoke 成员,因此您可以使用由“this.Invoke”或您的 toolStrip 其父级“ToolStrip”调用的表单调用,所以:

toolStrip.GetCurrentParent().Invoke(() =>
{
toolStrip.DropDownItems.Add(new ToolStripItemEx("start"));
});

关于c# - 调用 ToolStripMenuItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7145408/

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