Search code examples
c#clickpositionpicturebox

How to get the position of a Click?


I'm currently making a game where the player will click on one of his units (which are pictureboxes) and a circle will become visible with the player's unit in the center. (Circle is also a picturebox) When the player clicks on the picturebox of the circle I need to figure out if the position of the click is inside the radius of the circle. My question is how do I get the position of the click?


Solution

  • In your click handler, do:

    MousePosition.X
    MousePosition.Y
    

    Example:

    // 
    // pictureBox1 Init
    // 
    this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click);
    
    
    private void pictureBox1_Click(object sender, EventArgs e)
    {
        MessageBox.Show(string.Format("X: {0} Y: {1}", MousePosition.X, MousePosition.Y));
    }
    

    Shows: "X: 537 Y: 946"

    One more thing:

    The MouseEventArgs with coordinates only receives MouseUp and MouseDown. A MouseClick can't receive your coordinates, because a click consists of a MouseUp and a MouseDown, and both can have different coordinates.

    One more solution (I think this is best):

    private int X;
    private int Y;
    
    private void pictureBox1_Click(object sender, EventArgs e)
    {
        MessageBox.Show(string.Format("X: {0} Y: {1}", X, Y));
    }
    
    private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
    {
        X = e.X;
        Y = e.Y;
    }