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