Тройной щелчок мыши в C#?
на MS-Word
события щелчка мыши используются как:
один клик - размещение Курсора
Двойной Щелчок-Выбирает Слово
Тройной Щелчок-Выбирает Пункт
В C# я могу обрабатывать события с одним и двойным щелчком мыши, но я хочу обрабатывать Triple Mouse Click
событие C# Windows TextBox.
пример:
void textbox1_TripleClick()
{
MessageBox.Show("Triple Clicked");
}
4 ответов
взгляните на это: Mousebuttoneventargs.clickcount
Это должно покрыть его, я полагаю.
вам просто нужно сохранить время, когда в этом поле произошел двойной щелчок. Затем в обработчике для одного щелчка проверьте, произошел ли двойной щелчок не более N миллисекунд назад (N = 300 или около того).
в этом случае вызовите функцию TripleClick() напрямую или определите новое событие для производного "TripleClickAwareTextBox".
Я работал над аналогичной проблемой на C++
во-первых, вам нужно понять, как запускаются события, я возьму Клик с помощью левой кнопки мыши: - Нажмите один раз - > левая кнопка нажмите событие уволен - Двойной щелчок - > левый двойной щелчок событие уволен
Windows поддерживает вас только до этого уровня.
для тройного щелчка это, по сути, щелчок после двойного щелчка с достаточно небольшим промежутком времени. Итак, что вам нужно сделать, это обработать событие click, проверьте, был ли двойной щелчок до этого и запустите событие тройного щелчка.
хотя код отличается, вот как я это делаю:
- объявить doubleClickTime & doubleClickInterval для хранения в последний раз мы дважды щелкните & время между щелчками.
- объявить tripleClickEventFired, чтобы указать, что мы уже запустили событие (init в false)
обработчики
клик Обработчик
if ((clock() - doubleClickFiredTime) < doubleClickInterval)
<fire triple click event>
tripleClickFired = true;
else
<fire click event>
двойной клик обработчик
doubleClickTime == clock()
doubleClickInterval == GetDoubleClickTime() * CLOCKS_PER_SEC / 1000;
If ( !tripleClickEventFired)
<fire doubleClickEvent>
else
tripleClickEventFired = false;
функции я:
- clock (): получить текущее системное время в единице
- GetDoubleClickTime (): функция, предоставляемая Windows, чтобы получить время между щелчками
- часть "* CLOCKS_PER_SEC / 1000;" предназначена для скрытия возвращаемого значения GetDoubleClickTime () в единицу"'
Примечание: 3-й click запускает событие Click и Double Click на системном уровне
ЭТОГО:
private int _clicks = 0;
private System.Windows.Forms.Timer _timer = new System.Windows.Forms.Timer();
private void txtTextMessage_MouseUp(object sender, MouseEventArgs e)
{
_timer.Stop();
_clicks++;
if (_clicks == 3)
{
// this means the trip click happened - do something
txtTextMessage.SelectAll();
_clicks = 0;
}
if (_clicks < 3)
{
_timer.Interval = 500;
_timer.Start();
_timer.Tick += (s, t) =>
{
_timer.Stop();
_clicks = 0;
};
}
}