ArcGISEngine的BaseTool类中提供了鼠标双击、鼠标移动、鼠标按键按下、鼠标按键弹起四种鼠标事件,但是鼠标双击事件的参数跟其他三种不一样,双击事件中没有提供鼠标位置信息。
public virtual void OnDblClick();
public virtual void OnMouseDown(int Button, int Shift, int X, int Y);
public virtual void OnMouseMove(int Button, int Shift, int X, int Y);
public virtual void OnMouseUp(int Button, int Shift, int X, int Y);
今天在重载双击事件的时候,为了获取鼠标双击在制图页面的位置,找了好多的资料,最后想到了一种解决办法。
1、先获取鼠标在屏幕中的位置,Control.MousePosition
2、将绝对的屏幕坐标转换为相对于PageLayoutControl的屏幕坐标,AxPageLayoutControl.PointToClient(Control.MousePosition),注意,只有AxPageLayoutControl有这个函数,PageLayoutControl没有转换函数。这一步已经就可以用了,但是如果想获得鼠标在PageLayoutControl的页面坐标,还需要第三步。
3、将屏幕坐标转换为制图页面坐标,PageLayoutControl.ToPagePoint(pt.X, pt.Y)