まず、VS2005とC#2.0を使用しています。
SelectedIndexChangedイベント内からコンボボックスのTextプロパティを設定しようとしています。StackOverflowの別のスレッドから、これは次のように提案されました。
BeginInvoke(new Action(() => someCombobox.Text = "x" ));
さて、まず第一に、これは私のためにコンパイラエラーを返します。これは、Actionオブジェクトが2つの言語仕様で異なる動作をするためだと思います。C#2.0では、Actionオブジェクトは<T>
すべての宣言で構造を必要としているようです。私は間違っているかもしれませんが、それを明確にしてもらいたいと思います。
動作するのは次のとおりです。
BeginInvoke(new Action<string>( delegate { someCombobox.Text = "x"; }), new object[] { "" });
ただし、タイプパラメータを使用してActionオブジェクトを定義する必要があるのは非常に奇妙に思えます(特に、パラメータを渡すつもりがないため)。どういうわけか、このパラメータを削除すると、空の新しいobject []も廃止されます。これは、私が望んでいることです。
誰かが私が上記の呼び出しを単純化するのを手伝ってもらえますか?
最後に、BeginInvokeがSelectedIndexChangedの後に終了し、コンボボックスのTextプロパティが正しいテキストで更新されることが保証されていますか?
これらの質問に対する答えを学んでいただければ幸いです。