2

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

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

5 回答 5

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;
}
于 2013-10-05T17:09:29.027 回答
1

当 mouseup 事件发生时,您已经调用了该函数。您应该在点击图片框时调用该函数。尝试点击事件等事件来完成您的任务。

于 2013-10-05T17:08:50.257 回答
1

你的代码很完美,在我的电脑上工作
Please make sure that that event is actually called by putting debug point.
这里是同一
UI 部分的图像
在此处输入图像描述


代码部分
在此处输入图像描述

输出(当我点击图像时)
在此处输入图像描述

于 2013-10-05T17:15:26.893 回答
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");
}
于 2013-10-06T20:03:59.203 回答
0

这对我有用。我将此代码粘贴在表单的构造函数中。

pictureBox1.MouseClick += (s, e) => MessageBox.Show(String.Format("Mouse Clicked at X: {0} Y: {1}", e.X, e.Y));
于 2013-10-05T17:02:54.430 回答