C#如何获取datagridview每个单元格的location
我看了看,系统自带的只有datagridview的位置,我现在获取单元格位置是通过rowindex和columnindex换算得来的,但是一旦出现滚动条,这个方法就不管用...
我看了看,系统自带的只有datagridview的位置,我现在获取单元格位置是通过rowindex和columnindex换算得来的,但是一旦出现滚动条,这个方法就不管用了,有什么其他方法获得单元格的location么?
展开
展开全部
哥们,特地给你写了个例子:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
var p = PointToClient(Cursor.Position);
MessageBox.Show(p.X + "," + p.Y);
}
将当前鼠标的位置转换为客户区域位置就可以了.
追问
如果不单击呢?http://zhidao.baidu.com/question/122199969.html这个方法我也试了,但是其Y的值最小是0,如果滚动条向下滚动的话,最上方坐标的Y不应该是小于0的么?
追答
滚动到上面不可见了就都为0了.因为这个方法交GetCellDisplayRectangle.意思是显示的矩形区域.
要想计算虚拟的y小于0的坐标还得费点劲.
使用dataGridView1.FirstDisplayedScrollingRowIndex;来确定当前显示的第一行索引,如果你需要计算的索引小于这个,那么还需要减去dataGridView1.VerticalScrollingOffset(垂直滚动偏移)
X需要减去HorizontalScrollingOffset(水平滚动偏移)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询