Datagridview获取选定单元格的位置

时间:2014-10-16 08:50:47

标签: c# .net winforms datagridview

我已经在Stackoverflow中进行了一些搜索并找到了应该解决了我的问题的代码,但由于我无法找到的原因,它只是没有。我将解释我的问题:我的表单左侧显示一个问题,右侧可能的答案(可能的答案在datagridview中),当客户点击他的答案时,答案将在数据库中更新。客户端可以回到已经问过的问题并查看他之前的答案,该答案将由代码标记:

 DG.Rows[i].Selected = True;

所以似乎蓝色标记是不够的,我需要添加另一个符号,表示所选行是客户端已经点击的行。 我被要求在所选行旁边添加一个选中复选框以指示该复选框。 我创建了一个CheckBox并使用了这段代码:

 CbAnswer.Location = DG.PointToScreen(DG.GetCellDisplayRectangle(0, i, true).Location);

但由于某种原因,结果如下:

enter image description here

复选框应该在第5行右侧。 我想提一下,所有可能的答案都已填写在datagridview中,每次客户端点击一个单元格来选择他的答案,算法会隐藏前面的6个答案,并显示下6个答案。是否必须对我的问题采取任何措施?

3 个答案:

答案 0 :(得分:1)

使用此代码检查复选框

DG.Rows[i].Cells[1].Value = true; //where 1 is the checkbox column

编辑 (使用您的代码)

CbAnswer.Location = new Point(DG.Location.X + DG.Width, DG.Location.Y + 
               DG.GetCellDisplayRectangle(0, i + 1, true).Location.Y - CbAnswer.Height);

答案 1 :(得分:1)

要获取当前单元格,请尝试使用

DG.CurrentCell.RowIndex

DG.CurrentCell.ColumnIndex

我不知道蓝色标记

答案 2 :(得分:0)

你有什么不同的结果吗?

CbAnswer.Location = DG.PointToScreen(DG.CurrentCell.ContentBounds.Location);