我在一个表单上有一个datagridview,当我单击它时,会给出我所单击的正确的行/列索引:

单击verify the,第一行,将显示上述内容。但是,当从MDI父级调用此表单时,单击相同的第三列,第一行(验证)将显示以下内容:

下面是窗体的后台代码:
var result = new DAO().RetrieveAllProjects().Select(r => new { r.Name }).ToList();
dataGridView1.DataSource = result;
DataGridViewButtonColumn btn = new DataGridViewButtonColumn();
btn.HeaderText = "";
btn.Text = "View/Edit";
btn.Name = "edit";
btn.UseColumnTextForButtonValue = true;
DataGridViewButtonColumn btn2 = new DataGridViewButtonColumn();
btn2.HeaderText = "";
btn2.Text = "Verify";
btn2.Name = "verify";
btn2.UseColumnTextForButtonValue = true;
dataGridView1.Columns.Add(btn);
dataGridView1.Columns.Add(btn2);
dataGridView1.Columns[0].Width = 290;
dataGridView1.AutoSize = true;
dataGridView1.CellClick += dataGridView1_CellClick;
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
MessageBox.Show(string.Format("ColumnIndex:{0}, RowIndex: {1}", e.ColumnIndex, e.RowIndex));
}它是以这种方式从mdi父进程调用的:
projectsListForm pLF = new projectsListForm();
pLF.MdiParent = this;
pLF.Show();如何确保在mdi父级上突出显示正确的行/列
发布于 2017-02-13 15:28:59
由于某些原因,在使用MdiParent时,dataGridView1中会发生两轮数据绑定(触发DataGridView DataBindingComplete事件)。"Name“列被不必要地删除和添加(DataGridView ColumnAdded和ColumnRemoved事件)。为了停止这种行为,我在设置DataSource后禁用了列的自动生成:
dataGridView1.DataSource = ...;
dataGridView1.AutoGenerateColumns = false;更安全的选择是按名称处理列,而不是按索引
https://stackoverflow.com/questions/42188250
复制相似问题