2012-06-15 36 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

相关问题