我在做一个控件
控件里有一个Panel,我想获得鼠标相对于这个Panel的坐标(也就是相对于Panel左上角的位置)
我试过了很多方法
Point pos=this.Panel1.PointToClient(Control.MousePosition);
Point pos=this.Panel1.PointToClient(Cursor.Position);
都不行
把编译成的dll用到一个form上,所获得的pos.x和pos.y还是会随着该控件在form上的位置改变而改变,改变form在屏幕上的位置时,值也改变。这说明所得到的还不是相对于原来控件中Panel的位置。
急死我了,有没有哪位朋友明白的,谢谢了!

解决方案 »

  1.   

    WindowsFrom
    private void panel1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    textBox1.Text = "X:" + e.X.ToString() ;
    textBox2.Text = "Y:" + e.Y.ToString();
    } private void panel1_MouseLeave(object sender, System.EventArgs e)
    {
    textBox1.Text = "";
    textBox2.Text = "";
    }
      

  2.   

    在mousemove里面将该坐标点获取并公开就可以了
    private System.Drawing.Point _currentPoint = new Point(0, 0);
    public System.Drawing.Point CurrentPoint
    {
    get
    {
    return _currentPoint;
    }
    set
    {
    _currentPoint = value;
    }
    } private void panel1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    _currentPoint.X = e.X;
    _currentPoint.Y = e.Y;
    }
      

  3.   

    你直接使用MousePostion 试试,不要用Control.MousePosition
    ==================================================================            Point p=new Point(MousePosition.X,MousePosition.Y);            Point curp=Panel1.PointToClient(p);