Wywołanie Button_ClickEvent poprzez naciśnięcie klawiatury

0

Witam,

Mam na formatce kilka przycisków, w tym powiedzmy przykładowy MyButton. Ma on zdefiniowany dla siebie event MyButton_Click który cos tam robi.
Formatka ma także event wyłapujący naciśnięte klawisze.

Czy jest możliwość, żeby event naciśnięcia klawiatury wywoływał event naciśnięcia przycisku? (tzn żeby to przyciśnięcie klawiatury powodowało zmianę stanu buttona *MyButton *)

Proszę o pokazanie przykładu jak taka operacja może wyglądać.

Pozdrawiam

1
        private void MyButton_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Działa");
        }

        private void Form1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)13) //naciśnięto Enter (jeżeli obsługujesz więcej przycisków to nie if tylko switch)
            {
                MyButton.PerformClick(); //wywołaj zdarzenie kliknięcia
            }
        }
0

Dzięki!

Czy istnieje analogiczna funkcja która działałaby analogicznie, ale była równoważna wciśnięciu przycisku bez puszczania go ?

2

Nie wiem po co to komu ale teoretycznie można wysłać komunikat WM_LBUTTONDOWN:

using System.Runtime.InteropServices;
//cut
        const int MK_LBUTTON = 0x0001; //import funkcji SendMessage i potrzebne stałe
        const int WM_LBUTTONDOWN = 0x0201;
        const int WM_LBUTTONUP = 0x0202;
        [DllImport("user32.dll")]
        static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);

A komunikat wysyłasz tak:

SendMessage(MyButton.Handle, WM_LBUTTONDOWN, (IntPtr)MK_LBUTTON, IntPtr.Zero);

1 użytkowników online, w tym zalogowanych: 0, gości: 1