Как отследить нажатую и зажатую левую клавишу мыши? - 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...";
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5
Похожие ответы