在pictureBox C#中获取鼠标点击位置

时间:2013-10-05 16:55:02

标签: c# picturebox

我正在尝试在图片框上获取鼠标点击坐标并将信息放在文本框中。

我能够在表单中获得鼠标点击坐标,但我无法在图片框中获取鼠标坐标(当我点击图片框时没有任何反应)。我在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");
        }
    }
}

5 个答案:

答案 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部分
enter image description here


代码部分
enter image description here

输出(当我点击图片时)
enter image description here

答案 3 :(得分:1)

用此

替换pictureBox1_MouseUp
private 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));