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 に答える