Interakcija sa mišem i tastaturom
Postoje dva osnovna načina da naš program „zna” kada je korisnik reagovao.
-
Jedan način je očitavanje stanja miša i tastature. Iz programa možemo da pitamo koja je trenutna pozicija miša, da li je neki taster trenutno pritisnut i slično.
-
Drugi način je korišćenje događaja. Moguće reagovati na doslovno svaku akciju korisnika, kao što je pritisak na taster miša ili tastature, otpuštanje tastera, pomeranje miša i slično.
Očitavanje tastera i pozicije miša
Jednostavan način da u našim C# programima saznamo koja dugmeta (tasteri) miša su pritisnuta u određenom trenutku je da koristimo svojstvo formulara MouseButtons. Ispitivanje vršimo poredeći vrednost ovog svojstva sa odgovarajućim konstantama.
Na primer, sledećom naredbom se proverava da li je pritisnuto levo dugme miša (pri tome ostala dugmad mogu a ne moraju biti pritisnuta u isto vreme):
if ((MouseButtons & MouseButtons.Left) > 0)
// ...
Konstante koje odgovaraju pojedinim dugmetima miša su redom:
-
MouseButtons.Left za levo dugme
-
MouseButtons.Middle za srednje dugme (na mnogim miševima ovo je zapravo točkić, koji može i da se pritisne kao dugme)
-
MouseButtons.Right za desno dugme
Vrednosti svojstva MouseButtons su kombinacije ovih konstanti i zato datom if naredbom mi u stvari proveravamo da li svojstvo MouseButtons „sadrži” konstantu MouseButtons.Left. Jednostavniji uslov MouseButtons == MouseButtons.Left bi proveravao da li je trenutno pritisnuto isključivo levo dugme i nijedno više, što najčešće nije ono što nam treba. Na primer, ako je istovremeno pritisnuto levo i desno dugme, uslov naveden u if naredbi bi bio ispunjen, a ovaj drugi ne.
Očitavanje tastature
Kada je potrebno da proverimo da li korisnik drži neki od tastera na tastaturi pritisnut, koristimo logičku funkciju Keyboard.IsKeyDown (IsKeyDown je metoda klase Keyboard). Da bismo mogli da koristimo ovu funkciju bez navođenja punog imena (kvalifikovanog imena), potrebno je da dodamo sledeću naredbu na početak našeg programa:
using System.Windows.Input;
Time smo najavili da ćemo da koristimo prostor imena (namespace) u kome se nalazi i ime ove funkcije, tako da je umesto System.Windows.Input.Keyboard.IsKeyDown dovoljno pisati samo Keyboard.IsKeyDown.
Funkcija Keyboard.IsKeyDown prihvata jedan parametar, koji predstavlja jedan taster na tastaturi. Funkcija vraća true ako je taster pritisnut, a false ako nije. Za svaki taster postoji imenovana konstanta (u imenskom prostoru System.Windows.Input) koja ga predstavlja. Na primer, konstante Key.Left, Key.Right, Key.Up, Key.Down predstavljaju tastere sa strelicama levo, desno, gore i dole redom. U primerima koji slede najčešće ćemo koristiti upravo ove konstante. Neke od ostalih konstanti koje predstavljaju tastere tastature su:
-
Key.Space predstavlja razmak
-
Key.PageUp, Key.PageDown, Key.Home, Key.End, Key.Insert, Key.Delete predstavljaju tastere koji se tako i zovu
-
Key.A, Key.B, Key.C, … Key.Z predstavljaju tastere sa slovima
-
Key.D0, Key.D1, Key.D2, … Key.D9 predstavljaju tastere 0-9 u redu tastature iznad slova
-
Key.NumPad0, Key.NumPad1, Key.NumPad2, … Key.NumPad9 predstavljaju tastere 0-9 na numeričkoj tastaturi (desno)
-
Key.F1, Key.2, Key.3, … Key.12 predstavljaju funkcijske tastere u najvišem redu tastature
Kompletan spisak ovih konstanti možete da vidite na primer ovde .
Izvor: https://petlja.org