我已经建立了一个简单的程序(到目前为止),其中一个大的面板作为程序的“工作区”。我在其上绘制了网格,并实现了一些功能,例如将光标捕捉到最近的网格点等等。我在窗口底部拥有一个状态栏,用于显示我的当前位置。但是,无论我滚动到哪里(假设垂直滚动条相对于顶部距离为10%,水平滚动条为25%),它都会显示光标位置与实际窗口的位置关系。
我有一个OnMouseMove事件来处理这个问题:
我有一个OnMouseMove事件来处理这个问题:
private void WorkArea_MouseMove(object sender, MouseEventArgs e)
{
GridCursor = grid.GetSnapToPosition(new Point(e.X, e.Y));
toolStripStatusLabel1.Text = grid.GetSnapToPosition(new Point(e.X, e.Y)).ToString();
Refresh();
}
这段代码可以根据光标定位,将其绘制到正确的位置等,运行效果与预期相符。 但是,如果我滚动屏幕,读数仍然是相同的。 即使我的竖直和水平滚动条滚动到一半,当我把光标放在左上角时,它也显示为0,0,而不是实际应该是5000,5000(针对一个10k x 10k的面板)。
如何确定面板在滚动条方面的绝对位置?
WorkArea
是一个面板,对吗?GridCursor
、grid
、GetSnapToPosition
是什么?AutoScroll
打开了吗? - TaW