1

我要做的是检查是否选择了列表框中的项目。

该方法正在一个单独的线程上运行,所以我需要使用我相信的方法调用程序。

string list = "";
lbxList.Invoke(new MethodInvoker(delegate { list = lbxList.SelectedItem.ToString(); }));

if (list != null)
{
 //do something
}

如果所选项目为空,则此代码将爆炸,因为字符串列表不会保存它,因此我需要一种方法将前 2 行组合成一个 if 语句来检查是否为空。

谢谢

4

1 回答 1

5

这应该这样做:

string list = "";
lbxList.Invoke(new MethodInvoker(delegate
{
    if (lbxList.SelectedItem != null)
        list = lbxList.SelectedItem.ToString();
}));

//do something

只需将 if 语句放在匿名方法中即可。

请注意,.ToString不可能返回null任何东西,覆盖类型应实现该方法以返回有意义的状态的文档。object.ToString由于我们已经知道它不是 null,因此检查 null 并不是真正必要的。如果你真的想要,你可以留下它,但如果你害怕它应该返回 null,我会改为将代码更改为:.SelectedItem.ToString

string list = "";
lbxList.Invoke(new MethodInvoker(delegate
{
    if (lbxList.SelectedItem != null)
        list = lbxList.SelectedItem.ToString() ?? string.Empty;
}));

//do something
于 2013-04-01T11:28:12.160 回答