Как отследить нажатую и зажатую левую клавишу мыши? - C#
Формулировка задачи:
Здравствуйте!
Пишу программу которая будет отслеживать не только нажатую, но и "зажатую" левую клавишу мыши. На данный момент вот что смог найти:
Проблема в чём? Когда я нажимаю на ЛКМ то выдает сообщение "Кнопка нажата!". Но когда удерживаю её - нужно что бы это сообщение появлялось так, как будто я таймер забыл отключить (т.е. появлялось постоянно). Как это сделать?
Заранее спасибо!
[DllImport("user32.dll")] public static extern short GetAsyncKeyState(System.Windows.Forms.Keys vKey); private void timer1_Tick(object sender, EventArgs e) { if (isLButtonDown()) { MessageBox.Show("Кнопка нажата!"); } } bool isLButtonDown() { Int16 state = GetAsyncKeyState(Keys.LButton); return (state & 0x8000) != 0; }
Решение задачи: «Как отследить нажатую и зажатую левую клавишу мыши?»
textual
Листинг программы
private bool LMBpressed = false; DateTime momentLMBpressed = DateTime.Now; private void Form1_MouseUp(object sender, MouseEventArgs e) { if (((e.Button & MouseButtons.Left) > 0) && LMBpressed) { LMBpressed = false; DateTime t = DateTime.Now; var dt = t - momentLMBpressed; this.Text = String.Format("LMB was pressed for {0} seconds", dt.Seconds + dt.Milliseconds / 1000.0); } } private void Form1_MouseLeave(object sender, EventArgs e) { if (LMBpressed) { LMBpressed = false; DateTime t = DateTime.Now; var dt = t - momentLMBpressed; this.Text = String.Format("LMB was pressed for {0} seconds", dt.Seconds + dt.Milliseconds / 1000.0); } } private void Form1_MouseDown(object sender, MouseEventArgs e) { if ((e.Button & MouseButtons.Left) > 0) { LMBpressed = true; momentLMBpressed = DateTime.Now; this.Text = "LMB is pressed..."; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д