【问题标题】:Update treeview by sending multiple objects to invoke delegate method通过发送多个对象调用委托方法来更新树视图
【发布时间】:2014-04-22 06:39:59
【问题描述】:

我正在尝试更新树视图,但收到一个错误,提示我无法将 Obj 转换为字符串。

我正在创建一个使用多个线程的扫描仪,一旦检查了每个项目,我想调用一个委托来使用新信息更新树视图。如果我只使用对象调用该方法,则可以轻松调用它来更新信息,但一旦我尝试使用字符串,我就会收到错误。

这是我的做法:

public delegate void StringDelegate(string input, string address);

        public void UpdateScan(string input, string ip)
        {
            TreeNode treeNode = new TreeNode(input);

            if (!(outputTree.Nodes.ContainsKey(input)))
            {
                //Add our parent node
                outputTree.Nodes.Add(treeNode);
                //Add our child node
                treeNode.Nodes.Add(ip);
            } 
            else
            {
                //Add only child node
                treeNode.Nodes.Add(ip);
            }

        }

public void scanItem()
{

//Scan code

//Result Code
string outPut = "Pretend Result";

                //Invoke our callback
                object[] obj = new object[1];
                obj[0] = outPut;
                outputTree.BeginInvoke(new StringDelegate(UpdateScan), obj, Ip.ToString());

}

谁能告诉我哪里出错了?

【问题讨论】:

    标签: c# .net multithreading treeview


    【解决方案1】:

    您正在向调用中显式添加一个对象。

    改变

    object[] obj = new object[1];
    obj[0] = outPut;
    outputTree.BeginInvoke(new StringDelegate(UpdateScan), obj, Ip.ToString());
    

    outputTree.BeginInvoke(new StringDelegate(UpdateScan), outPut, Ip.ToString());
    

    【讨论】:

    • 嘿,这解决了问题,现在我很好地返回了两个字符串。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-31
    • 1970-01-01
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多