2012-06-15 64 views
1

真的很奇怪的問題,也許有人可以解釋一下。我有一個窗體與組合框。當你選擇它應該更新其他控件,所以我必須爲什麼combobox.Text的值在實際更改時落後?

Private Sub LoadAssociatedLocations() Handles combobox_categories.SelectionChangeCommitted 

     Dim test As String = combobox_categories.Text 

我在其他的WinForms項目,這樣做沒有問題,但由於某種原因,在這種情況下,當組合框被改變,組合框。文本具有先前選擇的值。 SelectedIndex值是連接索引,但Tex始終是先前選擇的索引的文本。我當然可以使用選定的索引,但我想知道是什麼導致了這種奇怪的行爲。

+0

涉及數據綁定?另外,你在子文件中缺少參數。 – LarsTech

+0

也許答案在於缺少的代碼..'是否與combobox.text'東西 – Steve

+0

@LarsTech是的,有數據綁定,對數據視圖。雖然我以前用這種方式使用過組合框,沒有問題。至於參數,我通常不會將它們包含在Handles中,而且也不需要參數中的任何數據。 – cost

回答

1

請嘗試使用SelectedItem屬性。

Private Sub LoadAssociatedLocations(ByVal sender As Object, _ 
            ByVal e As EventArgs) _ 
          Handles combobox_categories.SelectionChangeCommitted 
    TextBox1.Text = combobox_categories.SelectedItem.ToString 
End Sub 

另外,設置DropDownStyle = DropDownList將使comboBox1.Text更新正確。

+0

不起作用,我只是得到一個System.Data.DataRow.etc〜字符串。我必須使用DirectCast(combobox_categories.SelectedValue,DataRowView)(0).ToString()來獲取我想要的字符串。我仍然想知道爲什麼在這種形式下完成同樣的事情不起作用,而它以其他形式工作 – cost

+0

@cost顯然,你沒有在你的ComboBox中發佈*什麼,所以是的,你會必須施展它。如果你想使用'Text'屬性,你將不得不使用'SelectedIndex'事件或改變'comboBox1.DropDownStyle = DropDownList'。 – LarsTech

+0

DropDownStyle = DropDownList,這是使一個表單工作,而不是這一個的差異。非常感謝你!我喜歡瞭解這些小東西 – cost

0

顯然(至少根據你的例子)你有兩個組合框。一個名爲combobox和一個combobox_categories。你用錯了嗎?

+0

不,這只是一個錯誤,當把它放在這裏時。我試圖簡化代碼,當我把它放在SO – cost

相關問題