private void Form1_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("Col1");
dt.Columns.Add("Col2);
for (int j = 0; j < 10; j++)
{
dt.Rows.Add(new string[] { j.ToString(), "aaa"});
}
dataGridView1.DataSource = dt;
}
这里我创建了一个数据表并将其绑定到数据网格视图。我想要在单击时将update column = 1和row = 1 cell作为组合框单元格 所以我使用了以下活动。
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 1 && e.RowIndex == 1)
{
object value = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
ComboBoxCell = new DataGridViewComboBoxCell();
ComboBoxCell.Items.AddRange(Values);
this.dataGridView1[1, 1] = ComboBoxCell;
this.dataGridView1[1, 1].Value = Values[0];
TextBoxCell = null;
}
}
private void dataGridView1_CellLeave(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 1 && e.RowIndex == 1)
{
TextBoxCell = new DataGridViewTextBoxCell();
this.dataGridView1[1, 1] = TextBoxCell;
ComboBoxCell = null;
}
}
但是在cell_leave事件中它引发了异常
&#34;操作无效,因为它会导致重新调用 SetCurrentCellAddressCore函数&#34;
请帮我解决这个问题。
我尝试在column = 1 row = 2上添加组合框,然后它正常工作 但只有当出现相同的列且出现同一行问题时
答案 0 :(得分:1)
我认为您可以使用CellMouseLeave事件。
private void dataGridView1_CellMouseLeave(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 1 && e.RowIndex == 1)
{
DataGridViewTextBoxCell TextBoxCell = new DataGridViewTextBoxCell();
this.dataGridView1[1, 1] = TextBoxCell;
}
}
我尝试了上面的代码,它运行正常。
我还建议你阅读以下答案。
它不完全适用于CellLeave事件,但它可以帮助您找到一些解决方案。