我正在使用Windows窗体,并且DataGridView具有绑定到数据源的DataGridViewComboBoxColumn。
当用户从组合框中选择其他项目时,我希望立即更改行颜色以指示此新选择。
我已经测试过几个事件,比如CellValueChanged和RowPrePaint,但这些事件要求用户在做出选择后点击行中的 。
似乎行没有立即更新。相反,它会在用户单击该行后更新。 (即这是大多数网格的工作方式,但我想改变这种行为并给予用户即时反馈)
答案 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
}
}