我會通過給的我處理FormName.ButtonName.Visible =真 - 不工作(vb.net)
什麼,我有一個Windows窗體一個簡單的例子開始 - 讓叫它「模擬」並在formA上我有一個按鈕,在按鈕的屬性中設置visible = false。 我有一個名爲MainLoop語句
Public class MainLoop
sub new()
end sub
public sub run()
If someCondition then
formA.ButtonName.Visible = True
End if
end sub
end class
我有一個以上的線程在這個應用程序中運行,一個線程只是不斷通過這種「公共子跑」通過它循環運行,直到某些條件得到滿足不同的類。通過調試和逐步執行應用程序,我確定它正在運行設置visiblity = true的行。但按鈕只是沒有顯示在我的表單上。我已經確認它不是一個簡單的拼寫錯誤或任何東西 - 看起來我錯過了這裏的一個基本邏輯。
我曾嘗試做
dim TempForm as new formA
然後在IF語句我試圖
TempForm.ButtonName.Visible = true
但表單建立的一個新的實例 - 以及它不是在實際設置目前的形式,我正在使用按鈕。
任何幫助表示讚賞。
使用*類型名稱*其中一個*對象變量*是必需的是一個可怕的vb.net陷阱。當你使用線程時,它永遠不會失敗,它會給你一個新的表單對象。使用TempForm是一種嘗試解決方法,但落在**完全相同的陷阱中,您不希望更改新窗體實例上按鈕的可見性。你需要用戶正在看的那個。通過停止嘗試從線程更新UI來提前完成。 BackgroundWorker是模板類,讓你擺脫這種麻煩。 –