将ComboBox用作表单中的索引-更新ComboBox选择更改的控件

时间:2018-11-13 19:35:48

标签: c# .net winforms combobox

这实际上是一个非常简单且基本的问题,如果这是一个重复的问题(当然一定是这个问题),我深表歉意,但是我找不到任何简单的答案,最后把它扔了。

我已经在Visual Studio '17中创建了Windows窗体应用程序,创建了基于SQL Server表的数据源,并添加了绑定组合框。到目前为止,一切都很好。使用“数据源/数据集”面板中的拖放功能,我在文本框中填充了一些字段并绑定到数据。使用自动添加的数据绑定导航器,我可以在表中滚动,并且控件都将更新,因此我知道它们都已正确绑定。

现在,我要做的就是在组合框所选值更改时使控件更新。但是他们没有。从我所读的内容中,我猜测组合框需要以某种方式提醒数据源当前记录是否需要更新?如果是这样,我如何从组合框中将其更新为键值?也许这是完全错误的?我希望VS可以对绑定控件发挥作用,这样我就不必处理每个组合更改事件,查询数据库然后更新每个控件。

我认为这将是一个简单的任务;鉴于它非常基础,肯定会有直接的解释,但是讨论的问题更加复杂,或者讨论了数据绑定过程和对象的迷宫。这与我通常的.net和SQL编码有点类似,所以我希望只需要一两个简单的事件处理程序即可。

1 个答案:

答案 0 :(得分:1)

要设置ComboBoxListBox之类的列表控件作为数据索引时:

  • 将其DataSource属性设置为绑定其他控件的相同DataSource
  • 将其DisplayMember设置为在组合框中显示,但您不需要设置ValueMember
  • 请勿触摸 (DataBindings)。您不需要设置数据绑定。

示例

假设您有productsBindingSource,这些是绑定控件的设置:

  • idTextBox→数据绑定:Text属性绑定到Id的{​​{1}}属性
  • productsBindingSource→数据绑定:nameTextBox属性绑定到Name的{​​{1}}属性
  • Name→数据绑定:productsBindingSource属性绑定到priceTextBox的{​​{1}}属性

然后有一个Price作为索引,这些是Price的设置:

  • productsBindingSource属性设置为ComboBox
  • ComboBox属性设置为DataSource
  • 请勿触摸 productsBindingSource。您不需要设置数据绑定。

然后,当您从DisplayMember中选择一个项目时,绑定的控件将显示所选的项目,并且绑定的导航器也将移动:

enter image description here