从其他事件中获取数据

时间:2014-05-06 13:00:20

标签: c# events picturebox

我们可以通过鼠标在图片框上移动获得X和Y点;

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
     double Xcoordinate = e.X;
     double Ycoordinate = e.Y;

     label1.Text = Xcoordinate.ToString();
     label2.Text = Ycoordinate.ToString();
}

我的问题如何从其他事件中获取Xcoordinate和Ycoordinate为ex; MouseClick事件或我新定义的函数?

实际上我想从FormLoad中获取XCoordinate和Ycoordinate参数。我怎样才能做到这一点?

4 个答案:

答案 0 :(得分:1)

Use Cursor Position property..

 private void MoveCursor()
    {
       // Set the Current cursor, move the cursor's Position, 
       // and set its clipping rectangle to the form.  

       this.Cursor = new Cursor(Cursor.Current.Handle);
       Cursor.Position = new Point(Cursor.Position.X - 50, Cursor.Position.Y - 50);
       Cursor.Clip = new Rectangle(this.Location, this.Size);
    }

答案 1 :(得分:0)

MouseMove事件碰巧会给你鼠标位置。这不包含在其他EventArgs中。您始终可以通过Cursor.Position获取鼠标位置。

答案 2 :(得分:0)

静态方法Control.MousePosition将获得鼠标指针在屏幕上的绝对位置。您可以使用Control.PointToClient对其进行翻译,以获取感兴趣的控件的局部坐标。

如果我没记错的话,一点需要注意的是MouseEventArgs为您提供了将消息发布到事件循环时的鼠标位置,而Control.MousePosition立即为您提供的位置。对于大多数应用程序来说,这种差异可能不是什么大问题。

答案 3 :(得分:0)

您可以使用此解决方案在其他事件时获取图片框的坐标

protected override void OnMouseClick(MouseEventArgs e)
        {
            base.OnMouseClick(e);
            textBox1.Text = e.X.ToString();
            textBox2.Text = e.Y.ToString();
        }

       private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
            textBox1.Text = e.X.ToString();
            textBox2.Text = e.Y.ToString();

        }
    } 

或尝试它也

pictureBox1.MouseClick += (s, e) => MessageBox.Show(String.Format("Mouse Clicked at X: {0} Y: {1}", e.X, e.Y));