2017-02-17 43 views
2

我已經嘗試了幾種不同的方法來完成這個任務,並且他們都沒有工作。我需要獲得值tabControl1.SelectedTab.Name。如果我嘗試下面的代碼:從另一個線程使用調用獲取tabControl SelectedTab

string name = tabControl1.SelectedTab.Name; 

我得到我無法從另一個線程訪問對象的錯誤。所以現在我試圖使用Invoke來檢索值。我在網上找到並嘗試的方法之一是以下幾點。

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

這給出了錯誤對象引用未設置爲對象的實例。我已經嘗試了其他一些方法,但那些結果爲空。

我試圖通過搜索這個答案,但找不到任何工作。如果有人能指出我的方向,我將不勝感激。謝謝!

+0

您需要直接在UI線程上創建和操作幾何對象。您執行的任何線程處理都無法直接訪問幾何對象,必須將其分派給創建它們的線程 - UI線程。 –

回答

2

我認爲你正在嘗試做以下:

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

這將從UI線程返回SelectedTab的名稱。問候。

+0

謝謝。這完全解決了! – frostbyte

+0

不客氣! – darkvoid

相關問題