首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在c#中获取正确的MDIParent数据行/列索引

问如何在c#中获取正确的MDIParent数据行/列索引
EN

Stack Overflow用户
提问于 2017-02-12 21:41:09
回答 1查看 626关注 0票数 0

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

​

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

​

下面是窗体的后台代码:

代码语言:javascript
复制
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父进程调用的:

代码语言:javascript
复制
projectsListForm pLF = new projectsListForm();
pLF.MdiParent = this;
pLF.Show();

如何确保在mdi父级上突出显示正确的行/列

EN

回答 1

Stack Overflow用户

发布于 2017-02-13 15:28:59

由于某些原因,在使用MdiParent时,dataGridView1中会发生两轮数据绑定(触发DataGridView DataBindingComplete事件)。"Name“列被不必要地删除和添加(DataGridView ColumnAdded和ColumnRemoved事件)。为了停止这种行为,我在设置DataSource后禁用了列的自动生成:

代码语言:javascript
复制
dataGridView1.DataSource = ...;
dataGridView1.AutoGenerateColumns = false;

更安全的选择是按名称处理列,而不是按索引

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42188250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档