How to get the position of a Click?
With Yahia's answer, I learned that the EventArgs
can be cast to MouseEventArgs
.
private void pictureBox1_Click(object sender, EventArgs e)
{
MouseEventArgs e2 = (MouseEventArgs) e;
MessageBox.Show(string.Format("X: {0} Y: {1}", e2.X, e2.Y));
}
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;
}