Получите имя кнопки, на которую вы нажмете!
Привет,
Я планирую создать программу, которая отслеживает события мыши, каждый раз, когда происходит событие mousedown, она должна возвращать имя кнопки, на которой произошло событие click(кнопка, которая нажата).
Я понятия не имею, как это сделать.
Любые идеи о том, как это сделать, были бы абсолютно полезны.
заранее спасибо.
Что я уже пробовал:
Правильно знаю, что читаю о событиях мыши на msdn.
Sujith Karivelil
Вы можете использовать событие MouseDown элементов управления для их идентификации
m.r.m.40
Допустим, это модуль, который добавляется в программу, которая уже имеет около 1000 кнопок.
Ralf Meier
Каждое событие дает вам отправителя (как объект). Отправитель - это элемент управления, который вызвал событие.
m.r.m.40
Кажется, я понял, к чему ты клонишь.
Не могли бы вы дать мне больше информации?
Спасибо.
Ralf Meier
Так... каждая из этих кнопок должна ссылаться на тот же метод, что и событие, которое вы хотите иметь.
Это можно сделать с помощью петли.
Чтобы дать вам решение, вы должны дать мне больше информации ...
Какой язык программирования вы используете ? C# или VB ?
m.r.m.40
Я использую VB.
Моя собственная идея состоит в том, чтобы создать поток, который всегда отслеживает событие мыши, поэтому каждый раз, когда происходит событие mouseDown, он получает необходимые данные.
Спасибо.
Michael_Davies
Вы можете ловить все сообщения windows в вашем приложении с помощью Imessagefilter, это не скажет вам, что было нажато, просто щелчок произошел где-то в вашей форме, тогда вы можете использовать меня.ActiveControl, чтобы определить, что было нажато, но вам нужно знать имена элементов управления, чтобы определить, было ли это событие вам нужно.
Как говорит Ральф, вы можете добавить код или вызвать субподряд, передающий имя элемента управления в качестве аргумента, который делает все, что вы хотите сделать с событием.
Кнопка логически требует обработчика событий click вы можете делать то, что вам нравится в этом событии, если вы добавите модуль к существующему проекту 1000 кнопок (пожалейте пользователя), напишите sub, чтобы сделать то, что вы хотите, и добавьте вызов к этому sub в каждом обработчике событий для 1000 кнопок.
m.r.m.40
Что ж, это отличная идея,
Мне помогла следующая строка кода,
Ящик для сообщений.Показать(Me.Name.Метод toString() + "&ГТ;&ГТ;&ГТ; " + меня.Свойство activecontrol.Имя.Метод toString())
Теперь у меня есть еще одна проблема, как динамично добавить эту строку кода ко всем событиям щелчка всех контроллеров.
Philippe Mori
Если вы недостаточно хорошо разбираетесь в обработке событий, вам не следует пытаться делать такие вещи в масштабах всего приложения. Нет особого смысла показывать название каждой кнопки в окне сообщения, так как это повлияет на удобство использования приложения.
Добавление этого ко всем формам или пользовательским элементам управления может иметь некоторый побочный эффект для вашего приложения и может быть немного сложнее, чем вы могли бы ожидать, так как вам может потребоваться убедиться, что вы также удалите обработчик в соответствующее время, а также могут быть некоторые кнопки, которые вы можете игнорировать, или некоторые другие элементы управления должны рассматриваться как кнопки (кнопки панели инструментов, возможно, гиперссылки...)
Anisuzzaman Sumon
https://support.microsoft.com/en-us/kb/318804
посмотрите, как отслеживать событие мыши
m.r.m.40
Спасибо.
Prateek Dalbehera
http://stackoverflow.com/questions/7497024/how-to-detect-mouse-clicks
m.r.m.40
Спасибо.
BillWoodruff
Если вы создаете приложение WinForm и хотите, чтобы какой-то поток обновлялся действиями пользователя в пользовательском интерфейсе, это не сработает.
Идея пользовательского интерфейса с тысячей кнопок настолько маловероятна, что приближается к фантазии. Почему бы вам не рассказать нам, чего вы пытаетесь достичь ?.. большая картина.
m.r.m.40
Я прошу здесь идей,
Картина выглядит следующим образом,
Допустим, у меня уже есть разработанная программная система, включающая 20 подсистем, полностью включающая 1000 различных функциональных возможностей(1000 кнопок). теперь я буду следить за пользователем во время работы с этой программной системой.
Ralf Meier
Извиняюсь... Я не понимаю вашу "общую картину".
Не могли бы вы попытаться объяснить это с помощью скриншота ...?
m.r.m.40
Посмотрите, можете ли вы открыть или прочитать следующую ссылку на вопрос:
http://www.codeproject.com/Questions/1111581/Mouse-click-event-monitoring-How-to-save-the-mouse
Большое вам спасибо за помощь.
BillWoodruff
Начните путем делать некоторые исследования в GlobalHook; есть несколько статей на КП о том, как создать. Вы можете иметь приложение-объем глобального крюк, или Windows-ОС-объем глобального Хука.
У вас может быть ваше приложение времени выполнения ... каждый раз он создает новую форму ... рекурсивно проанализируйте все элементы управления и добавьте обработчик событий Click к каждой кнопке.
Является ли ваше приложение приложением WinForm ?
m.r.m.40
Да, это приложение WinForm. извините, что я ответил Вам очень поздно.