0

我有这个代码来绕过每个人存在的祸根

delegate int GetSelectedIndicesCountCallback(ListBox thing);
private int GetSelectedIndicesCount(ListBox thing)
{
 if (this.InvokeRequired)
 {
  GetSelectedIndicesCountCallback d = new GetSelectedIndicesCountCallback(GetSelectedIndicesCount);
  Invoke(d, new object[] { thing });
 }
 else
 {
  return thing.SelectedIndices.Count;
 }
 return 0;
}

返回 0 在那里,因为没有它会出错。但是,它总是返回 0。我不知道如何让它返回另一个值。

4

2 回答 2

5

对Control.Invoke的调用将返回您的方法的值。您所要做的就是将其投射int并返回。

return (int)Invoke(d, new object[] { thing });
于 2013-08-23T03:26:01.997 回答
2

当需要调用时,您自己调用并忽略返回值。这就是编译器需要return语句的原因。

您应该返回调用的结果,如下所示:

return (int) Invoke(d, new object[] { thing });
于 2013-08-23T03:25:30.723 回答