2011-10-04 88 views
1

我有一個DataGridView有4列,其中之一是一個下拉列表(ComboBox)。此列中的值必須是不同的,因此一旦在一行中選擇了給定的下拉值,我希望它在其他行中的任何下拉列表中都不可用。如果給定值未被選中,它應該再次顯示在下拉菜單中。我發現有幾篇文章有類似的例子(1,23);然而,他們都似乎涉及訂閱事件和手動填充組合框。DataGridView中的動態組合框

  • 有沒有辦法獨自做到這一點與數據綁定(可能爲IEnumerable這基本上是一個all.Except(selected) Linq查詢)?
  • 如果單靠數據綁定還不夠,是否有比我找到的例子更好的方法呢?

我對WinForms開發有點新,所以很難分辨好的建議,從「是的......這將工作,排序」。

回答

1

恐怕到目前爲止您搜索是正確的 - 有沒有更好的方式來在同一DataGridView中列組合框提供不同的名單比訂閱事件(通常CellBeginEditCellEndEdit,然後設置數據源爲個人DataGridViewComboBoxCell )。通過這方面的證據,我會告訴您優秀的DataGridView FAQ,這是由Microsoft的DataGridView程序經理Mark Rideout編寫的。常見問題有完整的解決方案,與您發佈的鏈接非常相​​似。

+0

你不會碰巧知道事情是否用WPF控件變得更好? – R0MANARMY

+1

@ R0MANARMY我還沒有專門嘗試過這種鏈式組合框源代碼與任何WPF網格,但總的來說,我發現WPF更適合與Winforms一起工作 - 即使在做一些不尋常的事情時 - 也是如此。很確定您可以使用高級WPF綁定將特定控件綁定到某些函數來支持此功能。 –