Ja te bas i nisam razumio, moras samo malo jos bolje pojasniti sta tacno zelis.
Iz pitanja se zakljucuje da ti treba kombinacija tipki (spominjao si drzanje tastera), a onda kazes da treba poslati samo jedan signal, te poslati drugi u trenutku pustanja tastera?
Ne razumijem niti zasto ti bas treba takvo ponasanje programa, te da li izmedju ta dva dogadjaja trebaju da se signali salju u nizu jedan za drugim.
Uglavnom, rjesenja imas jako mnogo, zavisno od onoga sta ti treba.
Ako trebas jednostavno ocitavanje koji je taster pritisnut, ali dok je forma programa u fokusu, te ako ne trebas neke naprednije mogucnosti, dovoljan je override
OnKeyDown i OnKeyUp metoda forme.
Evo nekog primjera:
Code:
public class Form1 : Form
{
public Form1()
{
// kod konstruktora forme
}
protected override void OnKeyDown(KeyEventArgs e)
{
label1.Text = e.KeyCode.ToString();
}
protected override void OnKeyUp(KeyEventArgs e)
{
label1.Text = e.KeyCode.ToString() + "UP";
}
}
Ako trebas da se drzanjem tastera salju signali u nekom nizu, treba ti jos par nekih stvari, ali princip je jednostavan:
1. odredi interval koji zelis, i kreiraj timer sa tim intervalom
2. postavi neku bool variablu (neki flag), koja ce se setovati true u ovoj event handler metodi za detektovanje pustanja tastera. Mozes ispitivati uslov e.KeyCode.ToString() == "W" ili nesto sta ti vec treba.
3. u Tick() timera, salji po jedan signal tamo gdje vec treba, sve dok se ne detektuje da je onaj flag od maloprije true, tada ugasi timer.
I zadnje, ako ti treba bilo sta od ovoga, ali u komplikovanijem obliku sto se pritiskanja tastera tice (npr. ako forma aplikacije nije u fokusu, ali zelis da pritiskom na W bude odradjeno sta zelis), moraces koristiti globalne low-level dogadjaje OS-a. Pod ovim mislim na nesto sto se zove keyboard hooks. Imas dosta finih tekstova na Internetu o tome, evo par primjera:
http://www.codeproject.com/KB/cs/CSLLKeyboardHook.aspx
http://blogs.msdn.com/toub/archive/2006/05/03/589423.aspx
http://support.microsoft.com/kb/320584
My programs don’t have bugs, they just develop random features.