2015-09-16 60 views
1

我有這種形式,包含一個GroupBox,在這個GroupBox中有一些標籤和一個CheckBox。 CheckBox在設計時設置爲'檢查',這意味着當它加載默認值時'檢查'。因此,當創建此表單的新實例時,該複選框的CheckChanged事件會在表單的加載事件之前觸發。標籤的文本值取決於複選框是否被選中。爲什麼GroupBox的文本按預期顯示,但不是標籤的文本?

這是CheckChanged事件的複選框,窗體的Load事件之前,它將觸發:

If chkUseAsFull.Checked Then 
    fraHalf.Text = "Full Spacing" 
    lblLitHalfSpacing.Text = "Spacing" 
    lblLitHalfSpeed.Text = "Speed" 
    txtHalfSpacing.Text = txtSpacing.Text 
    txtHalfSpacing.Enabled = False 
    cmdAdjustHalf.Enabled = False 
Else 
    fraHalf.Text = "Half Spacing" 
    lblLitHalfSpacing.Text = "1/2 Spacing" 
    lblLitHalfSpeed.Text = "1/2 Speed" 
    txtHalfSpacing.Text = Format(spc, "##0.00") 
    txtHalfSpacing.Enabled = True 
    cmdAdjustHalf.Enabled = True 
End If 
  • fraHalf是組框,lblLitHalfSpacinglblLitHalfSpeed是在它的標籤。

請注意,在設計時,組框和標籤的文本值是在未選中複選框時指定的值。

但是,當我啓動此表單時,組框的文本是「完整間距」,但標籤的文本是「1/2間距」和「1/2速度」。

爲什麼組框的文本會根據複選框的選中值正確顯示,而不是這些標籤的文本?

+0

不要依賴設計人員爲您運行代碼。有可能標籤正在發生變化,但設計師可能會稍後在代碼中將其更改回原始屬性。這意味着如果你知道默認值被選中,那麼標籤應該以默認模式創建。或者在加載事件中,您可以自己調用它'fraHalf_CheckChanged(fraHalf,EventArgs.Empty)' – LarsTech

+0

控件按照您將它們添加到表單的順序進行初始化。你的標籤可能正在改變,但是當設計者的代碼運行時,它們會改回來。標籤文本中的一個斷點(不論是看設計器代碼)將確認 – user3697824

+0

user3697824 - 我不知道關於控件添加到表單的順序。我沒有把這個表格放在一起,所以它必須以這樣的方式完成,標籤出現在複選框後面。很高興知道! @LarsTech - 是的,在設計師中改變這些價值觀的確有竅門。如果您將此作爲答案與user3697824提供的點一起發佈,我會接受它。謝謝! – Andarta

回答

0

不要依賴設計人員爲您運行代碼。有可能標籤正在發生變化,但設計師可能會稍後在代碼中將其更改回原始屬性。這意味着如果你知道默認值被選中,那麼標籤應該以默認模式創建。或者在負載事件中,您可以自己調用它

fraHalf_CheckChanged(fraHalf, EventArgs.Empty) 
相關問題