我有一个使用 OpenTk.GLControl 的程序。现在在我的听众上,每次鼠标悬停在所述控件上时,说“glControl1”,我想获取鼠标坐标。
那可能吗?下面的示例代码。
private void glControl1_MouseHover(object sender, EventArgs e)
{
// get the current mouse coordinates
// .........
}
OpenTK.GLControl 继承自System.Windows.Forms.Control。您可以使用以下代码片段来获取鼠标位置:
private void glControl1_MouseHover(object sender, EventArgs e)
{
Control control = sender as Control;
Point pt = control.PointToClient(Control.MousePosition);
}
有关详细信息,请参阅 MSDN WinForms 文档。
问题是您使用了错误的事件。WinForms 中的许多 UI 操作会触发每个操作的多个事件;悬停用于弹出工具提示之类的事情。您在 Hover 中没有得到坐标,因为它是不必要的。
你想要的是 MouseMove 事件。这用于跟踪鼠标位置:
private void glControl1_MouseMove(object sender, MouseEventArgs e)
{
foo = e.X;
bar = e.Y;
}
我不知道,什么是 OpenTk.GLControl,但是:
我正在处理 Windows Phone 上的滑动事件并这样做:
private void PhoneApplicationPage_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
//string to save coordinates of tap
TapCoordinatesXBegin = e.GetPosition(LayoutRoot).X.ToString();
TapCoordinatesYBegin = e.GetPosition(LayoutRoot).Y.ToString();
}
而且我不记得这样的事件 MouseHover - 也许是 MouseEnter?