从调用方法中获取返回值我正在尝试从另一个线程上的列表框项中读取一个值。我正在尝试创建一个新方法来运行invoke命令,我可以设法通过调用该方法将命令发送到列表框,就像添加一样,但我似乎无法得到响应,我似乎无法得到项目的价值,我尝试了几种方法,一旦我将它从空格更改为字符串并且事情开始变得毛茸茸......threadt1=newthread(thethread)t1.start()publicvoidthethread(){stringtext=readListBoxSelected(listBox1)+"lala";}publicstaticstringreadListBoxSelected(ListBoxlistbox){if(listbox.InvokeRequired){return(string)listbox.Invoke(newFunc(()=>readListBoxSelected(listbox)));}else{stringvarText=listbox.SelectedValue.ToString();返回可变文本;}}上面是我想要做的一个例子。这是错误:System.NullReferenceException未被用户代码处理Message=Objectreferencenotsettoaninstanceofanobject。来源=**StackTrace:位于**.Form1.readListBoxSelected(ListBox列表框)位于e:文档和设置scott我的文档visualstudio2010项目*****Form1.cs:第133行***.Form1。c_DisplayClass5.b_3()ine:documentsandsettingsscottmydocumentsvisualstudio2010Projects******Form1.cs:第127行InnerException:我猜错的正是它所说的“对象引用未设置为对象的实例”“......我所有的变量似乎都被声明为公平的,我该如何纠正这个?我觉得我处理整个事情都是错误的...0_o提前致谢Scott试试这个publicstaticstringreadListBoxSelected(ListBoxlistbox){if(listbox.InvokeRequired){return(string)listbox.Invoke(newFunc(()=>readListBoxSelected(listbox)));}else{if(istbox.SelectedValue!=null)returnlistbox.SelectedValue.ToString();elsereturnString.Empty}}代码看起来没问题,问题似乎出在SelectedValue上,为null。???谢谢大家,你哪里对了,问题是它返回了一个空值。我很确定我选择的项目是正确的,我从没想过这可能是问题所在。原来问题是两件事:1)我选择项目的方式,我使用listbox.Selecteditem=1,现在如果我使用listbox.setSelected(1,true)一切都很好:)和2)我得到的方式项目文本是错误的,listbox.SelectedValue什么都不是,它没有做我们想象的事情......我需要的电话是listbox.Text......publicstaticstringreadListBoxSelected(ListBoxlistbox){if(listbox.InvokeRequired){return(string)listbox.Invoke(newFunc(()=>readListBoxSelected(listbox)));}elseif(listbox.Text!=null){returnlistbox.Text.ToString();}否则返回String.Empty;}publicvoidselectListBoxItem(ListBoxlistbox,intnum){Invoke(newMethodInvoker(delegate{listbox.SetSelected(num,true);}));我必须说这是我做过的最烦人的事情......一切都需要我为它写一个委托/调用方法......一切......如此常见将由.net即时支持......看起来像只有一段时间来为个别代表写下所有内容..谢谢大家现在的工作,昨天我无法预见到这一点,总体问题是错误的调用,调用很好:)scott编辑:好的它返回NULL只是因为listbox.SelectedValue在我读取selectedvalue之后并没有真正被调用(你会认为它是),如果我将它更改为listbox1.text并且一切正常......对于这个.netOO东西来说非常愚蠢,如果我说这个....我必须讲个笑话...那好故意破坏我对面向对象编程的信念我知道这不是讨论四,但老实说调用SelectedValue.toString()应该做我们都认为它会做的......不,我们需要使用.Text来获得我们需要的东西0_o.........以上就是C#学习教程:从Invoke方法获取RETURN分享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
