Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Maros2470
Člen
Avatar
Maros2470:2.11.2014 20:04

Zdravím. Mám dotaz. Pokouším se v aplikaci využívat klávesových zkratek, ale nechce mi to fungovat. Ve Form mám nastaveno KeyPreview na true a kód mám takto:

private void MasterForm_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Control && e.KeyData == Keys.Enter)
            {
                var denikF = new DenikForm();
                denikF.Show();

            }
        }

Aplikace na klávesovou zkratku nereaguje. Pravděpodobně mi tam chybí nějaký Using, nebo knihovna. Můžete mi poradit? Děkuji

 
Odpovědět
2.11.2014 20:04
Avatar
Gramli
Tvůrce
Avatar
Odpovídá na Maros2470
Gramli:3.11.2014 10:58
if(e.Control && e.KeyData == Keys.Enter)
Nahoru Odpovědět
3.11.2014 10:58
Kdo to říká ten to je...
Avatar
Odpovídá na Maros2470
Lukáš Křehula:3.11.2014 14:20
private void MasterForm_KeyDown(object sender, KeyEventArgs e)
         {
             if (e.KeyCode == Keys.Control && e.KeyCode== Keys.Enter)
             {
                 var denikF = new DenikForm();
                 denikF.Show();

             }
         }

Kdyby to nefungovalo tak další alternativa je:

private void MasterForm_KeyDown(object sender, KeyEventArgs e)
{
bool ctrl, enter;
if(e.KeyCode == Keys.Control) ctrl=true;
if(e.KeyCode == Keys.Enter) enter=true;
if(ctrl && enter)
{
  var denikF = new DenikForm();
  denikF.Show();

}
}
Editováno 3.11.2014 14:21
 
Nahoru Odpovědět
3.11.2014 14:20
Avatar
Maros2470
Člen
Avatar
Odpovídá na Lukáš Křehula
Maros2470:4.11.2014 10:47

Nefunguje mi ani jedno.

 
Nahoru Odpovědět
4.11.2014 10:47
Avatar
Odpovídá na Maros2470
Andrej Farkaš:4.11.2014 14:06

Vyhodí ti aspoň tú udalosť?

Nahoru Odpovědět
4.11.2014 14:06
Live. Love. Learn.
Avatar
Maros2470
Člen
Avatar
Odpovídá na Andrej Farkaš
Maros2470:4.11.2014 19:11

Vůbec žádná reakce

 
Nahoru Odpovědět
4.11.2014 19:11
Avatar
Odpovídá na Maros2470
sadlomaslox25:4.11.2014 20:35

je treba rozlisovat key data a key code

if (e.KeyData == (Keys.Control | Keys.Enter))
    Console.WriteLine("k1");
if (e.KeyCode == Keys.Enter && e.Control)
    Console.WriteLine("k2");
if (e.KeyData.HasFlag(Keys.Enter) && e.KeyData.HasFlag(Keys.Control))
    Console.WriteLine("k3");
 
Nahoru Odpovědět
4.11.2014 20:35
Avatar
Maros2470
Člen
Avatar
Odpovídá na sadlomaslox25
Maros2470:5.11.2014 8:22

Díky moc

 
Nahoru Odpovědět
5.11.2014 8:22
Avatar
Odpovídá na Maros2470
Andrej Farkaš:5.11.2014 11:56

Nastav.

MasterForm.KeyPreview = true;

Alebo môžeš overridnuť ProcessCmdKey.

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
  if (keyData == (Keys.Control | Keys.F)) {
    MessageBox.Show("Ctrl+F");
    return true;
  }
  return base.ProcessCmdKey(ref msg, keyData);
}
Editováno 5.11.2014 12:00
Nahoru Odpovědět
5.11.2014 11:56
Live. Love. Learn.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.