treeview控件使用问题

YUHUI01 2017-06-20 09:03:50
我在使用treeview控件时出现了一些小问题,不知道怎样解决
代码如下
if (a == 1)
{
TreeNode treeView1 = new TreeNode("节点1");
Catalog1.Tag = place1;
Catalog1.Nodes.Add(treeView1);
textBox5.Text = state.remoteEP.ToString();
treeView1.Nodes.Add(Catalog1);

}
运行的时候提示
在该控件上执行的操作正从错误的线程调用。使用 Control.Invoke 或 Control.BeginInvoke 封送到正确的线程才能执行此操作。
具体应该怎样解决?具体应该怎样委托才有效?
...全文
135 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wang_peng_yl 2017-06-21
  • 打赏
  • 举报
回复
private delegate void AddNodeDelegate();
        private AddNodeDelegate AddNodeHandler;
        private void AddNode()
        {
            if (a == 1)
            {
                TreeNode treeView1 = new TreeNode("节点1");
                Catalog1.Tag = place1;
                Catalog1.Nodes.Add(treeView1);
                textBox5.Text = state.remoteEP.ToString();
                treeView1.Nodes.Add(Catalog1);

            }
        }

 private void Form_Load(object sender, EventArgs e)
        {
            this.AddNodeHandler = new AddNodeDelegate(this.AddNode);
            this.BeginInvoke(this.AddNodeHandler);
}
不建议用匿名
exception92 2017-06-21
  • 打赏
  • 举报
回复

this.BeginInvoke(new Action(() =>
                {
                    TreeNode treeView1 = new TreeNode("节点1");
                    Catalog1.Tag = place1;
                    Catalog1.Nodes.Add(treeView1);
                    textBox5.Text = state.remoteEP.ToString();
                    treeView1.Nodes.Add(Catalog1);
                }));
  • 打赏
  • 举报
回复
使用 Control.Invoke 或 Control.BeginInvoke 封送到正确的线程才能执行此操作。
YUHUI01 2017-06-20
  • 打赏
  • 举报
回复
引用 1 楼 xuggzu 的回复:
一个线程里不要操作其它线程里的控件,使用提示的委托执行。基本的跨线程委托操作,百度查书都有例子。
就是弄不出来啊,唉
xuggzu 2017-06-20
  • 打赏
  • 举报
回复
一个线程里不要操作其它线程里的控件,使用提示的委托执行。基本的跨线程委托操作,百度查书都有例子。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧