Skróty klawiszowe w zależności od tapPage

0

Mam pytanie jak zrobić skróty klawiszowe? Na formie mam umieszczony tapControl, w tapControl jest 6 tapPagów. Teraz chce na przykład żeby po naciśnięciu klawisza F1 w tapPage1 został wywołany kod, który jest pod zdarzeniem kliknięcie buttona1, który znajduje się na tapPage1. Następnie żeby ten sam przycisk F1 wywołał zdarzenie spod button2 ale z tapPage2. Czy to jest możliwe? Czy może nie można używać tego sama klawisza?

 

this

.KeyPreview = true;


 
private

 void Form1_KeyDown(object sender, KeyEventArgs e)
{
   if (e.KeyCode == Keys.F1)
   {
     

 
;button1_Click
(this, EventArgs.Empty);
     
 
;e
.Handled = true;
   }
   // itd dla każdego przycisku
}


 
private

 void button1_Click(object sender, EventArgs e)
{
   MessageBox.Show("F1");
}

0

Tap? A może fap fap fap? ;)

Jeśli chodzi o F1, to nie widzę innego rozwiązania niż ręczne, czyli np. takie:

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.F1)
    {
        if (this.tabControl1.SelectedTab == this.tabPage1)
        {
            this.button2.PerformClick();    
        }
        else if (this.tabControl1.SelectedTab == this.tabPage2)
        {
            this.button4.PerformClick();
        }                
    }
}

Oczywiście Form.KeyPreview trzeba ustawić na true.

Gdyby wystarczyły Ci skróty w rodzaju Alt + litera/cyfra, to można to zrobić łatwiej. Nadajesz przyciskowi nazwę np. &button1, taki przycisk możesz potem wywołać wciskając "Alt + b". Jeśli przyciski z takim samymi skrótami będą na różnych TabPage, to wywołany zostanie ten z aktualnie wybranej TabPage.

0

Somekind możesz coś więcej powiedzieć o tym prostszym rozwiązaniu. Nadać nazwę? Masz na myśli we właściwościach buttona własność Name?
Jeszcze jedno pytanie jak zastąpić tą linię, jeśli zamiast buttona mam linkLabela?
this.button4.PerformClick();

1
Newbie11 napisał(a)

Somekind możesz coś więcej powiedzieć o tym prostszym rozwiązaniu. Nadać nazwę? Masz na myśli we właściwościach buttona własność Name?

Nie Name tylko Text. Dajesz znaczek "&" przed literą, która będzie skrótem klawiaturowym do danego przycisku. Podobnie jak działa menu wielu programów.

Jeszcze jedno pytanie jak zastąpić tą linię, jeśli zamiast buttona mam linkLabela?

W najprostszej wersji, jeśli nie operujesz w metodzie na argumentach, to tak:

this.linkLabel1_LinkClicked(this, null);

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