Глобально отследить нажатие кнопок мыши 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;
}

Что удалось найти, но срабатывает через раз.


Ответы (2 шт):

Автор решения: Neomaster

Каждый объект на форме, кроме вашего TextBox, и саму форму кликнуть ЛКМ. Затем в окне Properties выберете вкладку Events со значком молния, там вы найдете события, связанные с мышью, кликните 2 раза и создастся обработчик.

введите сюда описание изображения

введите сюда описание изображения

→ Ссылка
Автор решения: S.A.V.
[DllImport("User32.dll")]
private static extern short GetAsyncKeyState(System.Int32 vKey);

...
private void TextBoxTimer_Tick(object sender, EventArgs e)
    {
        if ((GetAsyncKeyState(1) != 0) || (GetAsyncKeyState(2) != 0) || (GetAsyncKeyState(4) != 0))
        {
            if (!Tb.ClientRectangle.Contains(Tb.PointToClient(MousePosition))) FromTextBoxToLabel(Tb.Text);
        }
    }

На таймер вешаем обработку если нажата ЛКМ (1) или ПКМ (2) или средняя (4), то что-то происходит нужное нам. Работает.

→ Ссылка