2013-10-24 137 views
0

想到的是我想在鼠标光标位置显示FlowLayoutPanel。但是随着我的代码咆哮,它只能跳到我的表单的中心。我在DataGridView.CellMouseEnter事件上触发它。请求一些建议,谢谢。将控件移动到光标位置?

Private Sub dgw_CellMouseEnter(sender As Object, e As DataGridViewCellEventArgs) Handles dgw.CellMouseEnter 

    FlowLayoutPane1.Location = Cursor.Position 
    FlowLayoutPane1.Visible = True 

End Sub 
+0

Cursor.Position在屏幕坐标中。您需要改为使用FlowLayoutPane1.Parent.PointToClient(Cursor.Position)。你*真正需要的可能性为零,当用户使用键盘操作网格时,它仍然是一个完全随机的位置。 –

回答

0

使用MouseMove而不是MouseEnter事件。 MouseEnter仅当调用时才会调用
请注意,即使鼠标位置可能在控件之外,也会触发MouseMove事件。

+0

我意识到这一点,但它会触发我输入的每个细胞或?但是这仍然没有改变,我的FlowLayoutPane的产卵位置仍然存在问题。它仍然出现在窗体的中心,甚至不接近我的鼠标光标......? – Dave

+1

@Dave:对不起,我误解了你的问题。如果你正在谈论定位,你需要知道鼠标的位置总是在屏幕坐标中。因此,您可以使用[PointToClient](http://msdn.microsoft.com/zh-cn/library/system.windows.forms.control.pointtoclient.aspx)函数来计算表单坐标。 – joe

+0

完美运作。谢谢你,小伙伴。 – Dave