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
是組框,lblLitHalfSpacing
和lblLitHalfSpeed
是在它的標籤。
請注意,在設計時,組框和標籤的文本值是在未選中複選框時指定的值。
但是,當我啓動此表單時,組框的文本是「完整間距」,但標籤的文本是「1/2間距」和「1/2速度」。
爲什麼組框的文本會根據複選框的選中值正確顯示,而不是這些標籤的文本?
不要依賴設計人員爲您運行代碼。有可能標籤正在發生變化,但設計師可能會稍後在代碼中將其更改回原始屬性。這意味着如果你知道默認值被選中,那麼標籤應該以默認模式創建。或者在加載事件中,您可以自己調用它'fraHalf_CheckChanged(fraHalf,EventArgs.Empty)' – LarsTech
控件按照您將它們添加到表單的順序進行初始化。你的標籤可能正在改變,但是當設計者的代碼運行時,它們會改回來。標籤文本中的一個斷點(不論是看設計器代碼)將確認 – user3697824
user3697824 - 我不知道關於控件添加到表單的順序。我沒有把這個表格放在一起,所以它必須以這樣的方式完成,標籤出現在複選框後面。很高興知道! @LarsTech - 是的,在設計師中改變這些價值觀的確有竅門。如果您將此作爲答案與user3697824提供的點一起發佈,我會接受它。謝謝! – Andarta