2013-10-17 37 views
1

我有一個名爲「tables」的類,窗體上的一個winform「Form1」是一個名爲「table3」的按鈕。在「表」類的代碼在一個單獨的線程中運行,需要訪問主窗體上的按鈕,這就是我:從單獨的線程和類訪問WinForms控件

Form1.ActiveForm.BeginInvoke(
(Action)(() => 
{ 
    Form1.ActiveForm.Controls["table3"].Text = "test"; 
})); 

我得到一個空引用異常..的名義該按鈕是正確的。還有一些其他的問題,我不知道它可能是什麼:/

+2

請參閱http://stackoverflow.com/questions/1110458/winforms-interthread-modification –

回答

0

試試這個:

Invoke(new Action<object>((args) => 
{ 
    Form1.ActiveForm.Controls["table3"].Text = "test"; 
})); 
+0

e.Argument - e在當前上下文中不存在 – user2864613

+0

好的,我編輯了答案。您也可以在後臺工作中使用它,就像在這裏的答案:http://stackoverflow.com/questions/16373299/issue-with-drag-and-drop – Jerry

+0

使用後臺工作人員將需要我的代碼的一大堆修改..嗯 – user2864613

0

如果你得到一個NullReferenceException,然後引用爲null。所以要麼是Form1.ActiveForm == null,要麼是Form1.ActiveForm.Controls == nullForm1.ActiveForm.Controls["table3"] == null

我假設Form1是該類的名稱,ActiveForm是一個靜態屬性。