2014-03-07 45 views
0

當我調試我的程序時,我的UserControl按鈕消失。我已經檢查了包含designer.vb代碼的代碼無數次,沒有任何東西使得按鈕.enabled = false.visible = false。任何想法爲什麼發生這種情況?程序調試時UserControl按鈕消失

在我的用戶:

Private Sub btn_Begin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Begin.Click 
    Start_Race() 
End Sub 

Public Sub Start_Race() 
    TimeNow(Past_Time) 
    TimeNow(Start_Time) 
    lbl_Start_Time_Driver.Text = Past_Time 
    btn_Begin.BackColor = Color.Green 
    btn_Begin.Text = "Started!" 
End Sub 

Public Property Active_bool As Boolean 
    Get 
     Return btn_Begin.Visible 
    End Get 
    Set(ByVal value As Boolean) 
     btn_Begin.Visible = value 
    End Set 
End Property 

在Form1:

Private Sub btn_Start_All_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Start_All.Click 
    Dim allActiveUserControls = From uc_Index In Controls.OfType(Of LapTimerGUI)() 
    Where uc_Index.Active_bool 
    For Each User_Control In allActiveUserControls 
     User_Control.Start_Race() 
    Next 
End Sub 

我做谷歌我的頭之前,我在這裏發佈我的可笑的問題,順便說一句:)

+0

沒有人可以在沒有看到代碼的情況下回答這個問題。 – LarsTech

+0

我添加了所有包含所述按鈕的代碼,請幫助我D:我正在鬆動我的頭髮@LarsTech –

+0

我可能「簡單地」這樣說,因爲您正在調試,UI線程無法重新繪製控件。這是正常的,AFAIK你無法做任何事情。在調試部分之後,按鈕仍然不可見? – dummy

回答

0

經過大量的玩弄我終於發現了問題!

在我的屬性中,該值設置爲=False。我真金髮!感謝球員的幫助^ _ ^/

Public Property Active_bool As Boolean 
    Get 
     Return btn_Begin.Visible 
    End Get 
    Set(ByVal value As Boolean) 
     btn_Begin.Visible = value 
    End Set 
End Property 

雖然,東西設置值爲=False時不時。非常討厭:3 而且我無法將屬性值設置爲=True ...僅在隱藏的設計器代碼中...

1

這是奇怪的。是否有任何MsgBoxes彈出,如果你將此代碼添加到您的用戶控件:

Private Sub UserControl_ControlRemoved(sender As Object, e As System.Windows.Forms.ControlEventArgs) Handles Me.ControlRemoved 
    MsgBox("Control Removed!") 
End Sub 

Private Sub Button2_EnabledChanged(sender As Object, e As System.EventArgs) Handles Button2.EnabledChanged 
    MsgBox("EnabledChanged!") 
End Sub 

如果是這樣,那麼你可以添加一個斷點這些MsgBoxes並鎖在調用堆棧(CTRL+L),從那裏觸發。

順便說一句:如果控件被刪除某種方式,.PerformClick()仍然觸發(對我來說)。因此,我敢打賭,控制是以某種方式被禁用的(Enabled = False)。

最後,如果按鈕的任何容器(如您的用戶控件)被禁用,按鈕也將被禁用,

+0

得到了解決方案謝謝你的幫助@dummy :) –