2017-02-17 7 views
2

これを達成するためにいくつかの方法を試しましたが、いずれも機能していません。 tabControl1.SelectedTab.Nameの値を取得する必要があります。私は次のコードをしようとした場合:TabControl SelectedTabを呼び出しを使用して別のスレッドから取得

string name = tabControl1.SelectedTab.Name; 

を私は別のスレッドからオブジェクトにアクセスすることができませんでし午前エラーが発生します。だから今私は値を取得するためにInvokeを使用しようとしています。私がオンラインで見つけた方法の一つは、以下の通りです。

string name = tabControl1.Invoke((MethodInvoker)delegate { Text = tabControl1.SelectedTab.Name; })).ToString(); 

これは、オブジェクトのインスタンスに設定されていないオブジェクト参照のエラーを与えます。私は他のいくつかの方法を試しましたが、結果がnullになりました。

私はSOからこの回答を探してみましたが、うまくいきませんでした。私はどんな援助にも感謝しています。もし誰かが私を正しい方向に向けることができたら。ありがとう!

+0

ジオメトリオブジェクトは、UIスレッドで直接作成および操作する必要があります。実行するすべてのスレッド処理は、ジオメトリオブジェクトに直接アクセスすることはできません。直接作成したスレッド(UIスレッド)にディスパッチする必要があります。 –

答えて

2

私はあなたが次のことをやろうとしていると思う:

string tab = (string)this.Invoke(new Func<string>(() => controlTab1.SelectedTab.Name)); 

これは、UIスレッドからSelectedTabの名前を返します。よろしく。

+0

ありがとうございます。これは完璧に機能しました! – frostbyte

+0

よろしくお願いします! – darkvoid

関連する問題