我是C#的新手而不是编程。我一直在玩VS,对语言越来越熟,并且卡在一个绑定到内存数据集的int数据表列的组合框上。
我参与了 DataGridView ,创建 DataGridViewComboBoxColumn 并使用由Key:int
和{{1}组成的自定义类填充其下拉列表时没有任何问题}。 Desc:string
,ValueMember = Key
。 DataSource 保留为null,因为列表直接内置到ComboBox中。从组合框中选择并保存更改在网格中正常工作。
然后我转移到 ComboBox 。网格和ComboBox都具有完全相同的BindingSource。所以是的,他们同时指向同一行。
我将ComboBox绑定到:
DisplayMember = Desc
如果没有填充ComboBox的下拉列表项,我会看到原始int值显示在ComboBox中。我使用网格更改行,ComboBox值也会更改。所以这很好。
然后我填充ComboBox中项目的下拉列表(与绑定到同一列的网格列相同),这很麻烦。原始int值(例如19)与ComboBox的下拉列表中的正确“Key”项不匹配。我试过 DropDownStyle = DropDown & DropDownList ,但两者都没有运气。我已经找了好几个小时试图找到一个修复。没有连接到ComboBox的事件。我期望将原始值自动连接到ComboBox下拉列表中匹配的“Key”项。
还有别的东西可以挂钩吗?令人沮丧,因为我期待一些轻微的事情。
任何帮助都会非常感激。谢谢。
*编辑:下拉列表实际上来自填充的 BindingList<> ,而 BindingList<> 则作为 ComboBox.DataSource 提供强>
答案 0 :(得分:0)
我终于偶然发现了答案:
cbCtrl.DataBindings.Add(" SelectedValue",myBindingSource,ColDBName);
这就是我所需要的一切。我是从一篇好文章中得到的 http://www.codeproject.com/Articles/24656/A-Detailed-Data-Binding-Tutorial?msg=5325959#xx5325959xx