繁体   English   中英

如何在C#中的MDIParent中获取正确的datagridview有效行/列索引

[英]How to get correct datagridview valid row/column index in MDIParent in c#

我在窗体上有一个datagridview,单击该窗体时,它会为我提供单击的正确行/列索引: 在此处输入图片说明

单击验证[第三列,第一行,给出以上内容]。 但是,当从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父项上突出显示正确的行/列

由于某些原因,使用MdiParent时,dataGridView1中发生两轮数据绑定(触发了DataGridView DataBindingComplete事件)。 “名称”列将不必要地删除和添加(DataGridView ColumnAddedColumnRemoved事件)。 要停止此行为,我在设置DataSource后禁用了列自动生成:

dataGridView1.DataSource = ...;
dataGridView1.AutoGenerateColumns = false;

一个更安全的选择是按名称而不是按索引使用列

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM