1
我正在創建一個動態組合框並添加到表單中。我試圖用ArrayList中的DataSource填充組合框,然後在組合框中根據屬性的值選擇一個項目。動態組合框數據源表單加載
問題是組合框項目直到Form_Load事件完成並且窗體可見之後纔會被綁定。所以當我嘗試設置組合框的選定索引時,組合框是空的。見我在做什麼詳細的代碼,並參考意見代碼:
Dim cboValues As New ComboBox
cboValues.Width = fieldControlWidth
cboValues.DropDownStyle = ComboBoxStyle.DropDownList
cboValues.Name = "cboResult"
For Each d As SystemTaskResult In [Enum].GetValues(GetType(SystemTaskResult))
Dim cv As New ComboBoxDisplayValue(d.ToString, d)
arrValues.Add(cv)
Next
cboValues.DataSource = arrValues
cboValues.DisplayMember = "Display"
cboValues.ValueMember = "Value"
Dim val As SystemTaskResult = DirectCast(p.GetValue(Me.Task, Nothing), SystemTaskResult)
'Was trying to get this to work, but commented out to try the below
'cboValues.SelectedIndex = cboValues.Items.IndexOf(New ComboBoxDisplayValue(val.ToString, val))
'Then this doesn't work because the combo box hasn't updated it's DataSource yet, which is probably the reason for the above not working as well.
For i = 0 To cboValues.Items.Count - 1
cboValues.SelectedIndex = i
If cboValues.SelectedValue = val Then
Exit For
End If
Next
holdPanel.Controls.Add(cboValues)
如何選擇選擇組合框指數沒有一個黑客(加載定時器或一些愚蠢的類似)的權利?
謝謝您的回答,但組合框中的項目仍在0在Form.Shown事件。請記住,這是一個動態控件,而不是表單上的控件。我認爲這是這個問題。 – ScottN 2010-10-21 18:46:42
@ScottN不知道爲什麼你堅持要在同一個函數中執行它們,但是你也可以嘗試在Shown事件上創建組合框 – 2010-10-21 18:50:26
對不起,如果我在Form Load中做了我的控件創建,然後在Form Shown中嘗試將組合框設置爲正確的選定索引項目現在填充,我希望能夠在相同的功能做到這一點。我想不可能。 – ScottN 2010-10-21 18:51:13