首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

怎么在datagridview中获得当前选定单元的坐标值,即left和top的相对坐标

2012-12-25 
怎样在datagridview中获得当前选定单元的坐标值,即left和top的相对坐标?怎样在datagridview中获得当前选定

怎样在datagridview中获得当前选定单元的坐标值,即left和top的相对坐标?
怎样在datagridview中获得当前选定单元的坐标值,即left和top的相对坐标? 求代碼
[最优解释]
说实话,在界面上动脑筋真的好烦人.哎..要浪费很多精力
[其他解释]
http://msdn.microsoft.com/zh-cn/library/system.windows.forms.datagrid.hittestinfo(v=vs.80).aspx
[其他解释]
单元格点击事件参数里获取
[其他解释]
二楼网址打不开,三楼那个我没看到坐标的参数啊,给个代码吧
[其他解释]
要这么细吗?一定要鼠标的参数?

单元格的格子参数不行?
[其他解释]
我就是想把日历控制移动选定的单元格下方
[其他解释]
那直接用参数e就可以了,e后面敲个点,利用自动完成,找一找,应该有个e.mousedown或e.select的参数,具体的我也不记得,我去帮你看下
[其他解释]


Private Sub DataGridView1_CellMouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseDown
        MsgBox(e.RowIndex & "  " & e.ColumnIndex & "  " & DataGridView1.RowHeadersWidth)
    End Sub

注意看事件,我帮你看了一下,确实,返回的这个是单元格的位置,但你要控制显示的位置,还要有个转换,
datagridview有个RowHeaders,所以你要计算位置的话,先减去它,然后还要有个循环计算行和列,
[其他解释]
如何计算??,是否可以直接取到鼠标的坐标来得直接??
[其他解释]
直接取的鼠标坐标,就不是在当前的单元格下面那一格了,而是当前鼠标的位置.

如果想做漂亮点,显示在当前点击的单元格的下面那一格,应该要计算出当前单元格的下面那一格的左上角的坐标位置.计算方法是用

((e.RowIndex +1) * 行高)+列头的高  '(行高如果是一样的,就不用循环,直接乘,如果不一样,要用循环来死算.) 因为你要的是下一行,所以要加个1..这个就是行了,再来算列.

 e.ColumnIndex +RowHeadersWidth(这个是行头)+ 当前点击位置的前面,的所有的列宽(所以这要有个循环).这个是列.比如点的是第二列,当然就要加上第一列的宽度.

其实好简单的,无非就是把datagridview作为一个坐标系,它的左上角是0,0,其余的位置,通通都可以通过这个坐标系来表示.
[其他解释]
不过话说回来,这么取,得到的也只是datagridview里面的坐标,你还要显示控件呢,应该要用窗体的坐标系,
还要换算一下,我靠,
我看你还是就用鼠标位置算了.
   Private Sub DataGridView1_CellMouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseDown
        ContextMenuStrip1.Show(MousePosition.X, MousePosition.Y)
        Me.Text = MousePosition.X & "  " & MousePosition.Y
        Debug.Print(e.Location.X)
    End Sub

[其他解释]
這個取得的是區域坐標,當窗口最大化後位置跑了,如保取到屏幕的坐標
[其他解释]
窗口最大化的时候,弹出来的菜单或者控件就消失了呀.就得重弹
[其他解释]
通过区域坐标OK

热点排行