Определение положения щелчка мыши в окне изображения C#

#c# #forms #winforms #windows-forms-designer

#c# #коробка с картинками

Вопрос:

Я пытаюсь получить координаты щелчка мыши на поле с изображением и поместить информацию в текстовое поле.

Я могу получить координаты щелчка мыши в форме, но я не могу получить координаты мыши в поле изображения (ничего не происходит, когда я нажимаю в поле изображения). Я просмотрел ответы на аналогичный вопрос в 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");  }  } }  

Комментарии:

1. Ваш код работает на моем компьютере.

Ответ №1:

 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. Спасибо! Сначала я не смог вызвать событие мыши… вышесказанное решило проблему!!

Ответ №2:

Вы вызвали эту функцию при возникновении события mouseup. вы должны вызвать функцию при нажатии на поле с изображением.попробуйте такие события, как tapped, чтобы выполнить свою задачу.

Ответ №3:

Ваш код идеален и работает на моем компьютере
Please make sure that that event is actually called by putting debug point.
вот изображения для того же
Часть пользовательского интерфейса
введите описание изображения здесь

Кодовая часть
введите описание изображения здесь

Вывод (пока я нажимаю на изображение)
введите описание изображения здесь

Комментарии:

1. Я поставил консоль. WriteLine(«мышь вверх»); сообщение в pictureBox1_MouseUp, и это никогда не отображается в окне вывода! Похоже, это событие никогда не называется! Почему это так?!?

Ответ №4:

Замените 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"); }  

Ответ №5:

Это сработало для меня. Я вставил этот код в конструктор формы.

 pictureBox1.MouseClick  = (s, e) =gt; MessageBox.Show(String.Format("Mouse Clicked at X: {0} Y: {1}", e.X, e.Y));