我正在尝试在图片框上获取鼠标点击坐标并将信息放在文本框中。
我能够在表单中获得鼠标点击坐标,但我无法在图片框中获取鼠标坐标(当我点击图片框时没有任何反应)。我在stackoverflow上查看了类似问题的答案,但似乎没有什么对我有用。
这是我的完整代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace testGraphiqueCSharp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
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();
Console.WriteLine("mouse up");
}
}
}
答案 0 :(得分:4)
private void pictureBox1_Click(object sender, EventArgs e)
{
var mouseEventArgs = e as MouseEventArgs;
if (mouseEventArgs != null) textBox1.Text = "X= " + mouseEventArgs.X + " Y= " + mouseEventArgs.Y;
}
答案 1 :(得分:1)
发生mouseup事件时调用了该函数。你应该在点击图片框时调用该函数。点击事件就可以完成你的任务。
答案 2 :(得分:1)
您的代码非常完美并且在我的计算机上工作
Please make sure that that event is actually called by putting debug point.
这是相同的图像
UI部分
代码部分
输出(当我点击图片时)
答案 3 :(得分:1)
用此
替换pictureBox1_MouseUpprivate void pictureBox1_Click(object sender, EventArgs e)
{
MouseEventArgs eM = (MouseEventArgs)e;
textBox1.Text = eM.X.ToString();
textBox2.Text = eM.Y.ToString();
Console.WriteLine("mouse up");
}
答案 4 :(得分:0)
这对我有用。我把这段代码放在了构造函数中。
pictureBox1.MouseClick += (s, e) => MessageBox.Show(String.Format("Mouse Clicked at X: {0} Y: {1}", e.X, e.Y));