DataGridView中的动态组合框
问题描述:
我有一个DataGridView有4列,其中之一是一个下拉列表(ComboBox)。此列中的值必须是不同的,因此一旦在一行中选择了给定的下拉值,我希望它在其他行中的任何下拉列表中都不可用。如果给定值未被选中,它应该再次显示在下拉菜单中。我发现有几篇文章有类似的例子(1,2,3);然而,他们都似乎涉及订阅事件和手动填充组合框。DataGridView中的动态组合框
- 有没有办法独自做到这一点与数据绑定(可能为IEnumerable这基本上是一个
all.Except(selected)
Linq查询)? - 如果单靠数据绑定还不够,是否有比我找到的例子更好的方法呢?
我对WinForms开发有点新,所以很难分辨好的建议,从“是的......这将工作,排序”。
答
恐怕到目前为止您搜索是正确的 - 有没有更好的方式来在同一DataGridView中列组合框提供不同的名单比订阅事件(通常CellBeginEdit
和CellEndEdit
,然后设置数据源为个人DataGridViewComboBoxCell
)。通过这方面的证据,我会告诉您优秀的DataGridView FAQ,这是由Microsoft的DataGridView程序经理Mark Rideout编写的。常见问题有完整的解决方案,与您发布的链接非常相似。
你不会碰巧知道事情是否用WPF控件变得更好? – R0MANARMY
@ R0MANARMY我还没有专门尝试过这种链式组合框源代码与任何WPF网格,但总的来说,我发现WPF更适合与Winforms一起工作 - 即使在做一些不寻常的事情时 - 也是如此。很确定您可以使用高级WPF绑定将特定控件绑定到某些函数来支持此功能。 –