当DataGridViewComboBox的选定索引发生更改时,如何立即更改行颜色?

时间:2011-10-17 22:53:13

标签: winforms datagridview combobox paint

我正在使用Windows窗体,并且DataGridView具有绑定到数据源的DataGridViewComboBoxColumn。

当用户从组合框中选择其他项目时,我希望立即更改行颜色以指示此新选择。

我已经测试过几个事件,比如CellValueChanged和RowPrePaint,但这些事件要求用户在做出选择后点击行中的

似乎行没有立即更新。相反,它会在用户单击该行后更新。 (即这是大多数网格的工作方式,但我想改变这种行为并给予用户即时反馈)

1 个答案:

答案 0 :(得分:0)

您可以使用DataGridView的EditingControlShowing事件并为ComboBox.SelectedIndexChanged事件添加事件处理程序:

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    ComboBox cb = e.Control as ComboBox;

    if (cb != null)
    {
        cb.SelectedIndexChanged += new EventHandler(cb_SelectedIndexChanged);
    }
}

并在事件处理程序中,设置CurrentRow的颜色:

void cb_SelectedIndexChanged(object sender, EventArgs e)
{
    ComboBox cb = sender as ComboBox;

    if (cb != null)
    {
        // check the selected index, update the DataGridView.CurrentRow.DefaultCellStyle.BackColor
    }
}