#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));