C#如何获取datagridview每个单元格的location

我看了看,系统自带的只有datagridview的位置,我现在获取单元格位置是通过rowindex和columnindex换算得来的,但是一旦出现滚动条,这个方法就不管用... 我看了看,系统自带的只有datagridview的位置,我现在获取单元格位置是通过rowindex和columnindex换算得来的,但是一旦出现滚动条,这个方法就不管用了,有什么其他方法获得单元格的location么? 展开
 我来答
Lim
推荐于2016-03-29 · 知道合伙人软件行家
Lim
知道合伙人软件行家
采纳数:152 获赞数:1014
资深研发工程师,敏捷教练ScrumMaster

向TA提问 私信TA
展开全部

   哥们,特地给你写了个例子:

     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(水平滚动偏移)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式