# Pouziti klavesnice

<{ForumPost(poster="Anonymous", timestamp=2008-07-30 12:36:59)}>
Ahoj :)  
  
Pisu zapoctak k programku, ale mam mensi problem.  
Je to Windows aplikace a potrebuju po stisku klaves vyvolat nejakou udalost (jsou to sipky, ktere mi meni smer).  
Ale nevim jak to udelat :( dal jsem tam ctyri buttony jenze k nem nemuzu pridat klavesovou zkratku :(  
pls poradte jak to mam udelat.  
  
Diky :)  
  
EDIT: Jo a pisu to v Microsoft  Visual C# Express Edition :)
<{/ForumPost}>

<{ForumPost(poster="Him", timestamp=2008-07-30 12:56:32)}>
Normalne ProcessCmdKey nezachytava sipky, musis tu metodu overridnout  
  
       

    // override ProcessCmdKey pro zachytavani stisku klaves: left/right/up/down arrow atd..
    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
            if (keyData == Keys.Left) // Keys.Right,...
            {
                // proved neco 
                return true;
            }
    
            return base.ProcessCmdKey(ref msg, keyData);
    }
    


<{/ForumPost}>

<{ForumPost(poster="Anonymous", timestamp=2008-07-30 13:25:13)}>
Diky, ale to nedela to co potrebuju :(  
  
napr. v tomhle

    public partial class Form1 : Form
        {
            // override ProcessCmdKey pro zachytavani stisku klaves: left/right/up/down arrow atd..
            protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
            {
                if (keyData == Keys.Left)
                {
                    MessageBox.Show("Vlevo");
                    return true;
                }
                if (keyData == Keys.Right)
                {
                    MessageBox.Show("Vpravo");
                    return true;
                }
                if (keyData == Keys.Down)
                {
                    MessageBox.Show("Dolu");
                    return true;
                }
                if (keyData == Keys.Up)
                {
                    MessageBox.Show("Nahoru");
                    return true;
                }
    
                return base.ProcessCmdKey(ref msg, keyData);
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
    
                System.Random rnd = new System.Random();
                for (int i = 0; i < 1000; i++)
                {
                    button1.Top = rnd.Next(100);
                    button1.Left = rnd.Next(200);
                    for (int j = 0; j < 100000; j++)
                    {
                    }
                }
            }
        }
    

  
po stisku tlacitka mi nereaguje klavesnice, pouze po skonceni for cyklu mi to vyhodi message box prvni sipky kterou jsem zmackl .  
  
Ja bych ale potreboval aby mi hned po stisku klavesy vyhodilo ten messagebox :)  
pls nejakou radu  
diky :)
<{/ForumPost}>

<{ForumPost(poster="Him", timestamp=2008-07-30 13:29:13)}>
Ja to resil pres vlakna.. hledej na webu: c# Threads
<{/ForumPost}>

<{ForumPost(poster="Wideman", timestamp=2008-07-30 16:09:44)}>
Někde dole v této diskusi: [http://forum.builder.cz/read.php?31,2672162](http://forum.builder.cz/read.php?31,2672162) je odkaz na dobrej popis vláken v C#. Je to myslim kapitola z knihy C# in nutshell a já jsem se to z toho učil. Mimochodem při práci na zápočťáku jsem objevil tento web: [https://downloads.channel8.msdn.com/](https://downloads.channel8.msdn.com/) Tam si můžete zdarma stáhnout VS 2008 Professional a další programy, ale musíte se zaregistrovat a mít platnou ISIC kartu UK, jejíž kód to při registraci taky vyžaduje.
<{/ForumPost}>

