使DataGridView ComboxColumn的事件会影响另一个ComboBox列的集合

本文关键字:ComboBox 另一个 集合 影响 DataGridView ComboxColumn 事件 | 更新日期: 2023-09-27 18:20:05

你会认为我可以找到一个代码示例:假设我有一个带有DataGridView和2个ComboBoxColumns的WinForm。列不是数据绑定的,它们的所有选项都有一个静态集合。因此,当对第1列进行更改(即不同的选择)时,我想用程序更改第2列的项目集合。有什么例子吗?

使DataGridView ComboxColumn的事件会影响另一个ComboBox列的集合

您的问题是如何在DataGridViewComboBoxColumn下为ComboBox注册SelectedIndexChanged事件处理程序,我们都知道DataGridViewComboBoxColumn没有这样的事件。为了解决这个问题,我们有几种方法可以使用数据绑定源或静态源来处理DataGridViewComboBoxColumn。因为你说你的Items是为你的combobox正常添加的,所以我有这个解决方案:

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        if(e.Control is DataGridViewComboBoxEditingControl){
        ((DataGridViewComboBoxEditingControl)e.Control).SelectedIndexChanged -= SelectedIndexChanged;
        ((DataGridViewComboBoxEditingControl)e.Control).SelectedIndexChanged += SelectedIndexChanged;
        }
    }
private void SelectedIndexChanged(object sender, EventArgs e)
    {
        DataGridViewComboBoxEditingControl combo = sender as DataGridViewComboBoxEditingControl;
        //Change the source of the other combobox column accordingly
        //
        //////////////////////////////////////////////////////////
    }

您必须添加代码来相应地重新填充另一个组合框列的源代码,这取决于您自己。