Label, TextBox, Button
Înainte de a examina fiecare control în parte, există o regulă pe care o aplici de la primul control adăugat pe formular și pe care o respecți pe tot parcursul proiectului: redenumești fiecare control imediat după ce îl plasezi pe formular.
Visual Studio generează automat nume ca button1, textBox1, label1. Aceste nume nu comunică nimic despre rolul controlului în aplicație. Codul care referă textBox3 sau button2 devine ilizibil după câteva zile, chiar și pentru persoana care l-a scris.
Convenția standard folosește un prefix scurt urmat de un nume descriptiv:
btn
Button
txt
TextBox
lbl
Label
lst
ListBox
chk
CheckBox
cmb
ComboBox
grp
GroupBox
Exemple concrete din exercițiu: btnAdauga, btnSterge, txtNume, txtPrenume, txtCautare, lblStatus, lstContacte, chkNotificari.
Redenumirea se face din fereastra Properties, câmpul (Name), care apare primul în lista de proprietăți. Este esențial să înțelegi că (Name) și Text sunt proprietăți diferite: (Name) este identificatorul cu care accesezi controlul în cod, Text este textul vizibil pe ecran.
Label
LabelLabel afișează text pe formular. Nu poate fi editat de utilizator și nu captează focusul. Este folosit atât pentru texte statice (denumiri de câmpuri, titluri de secțiuni) cât și pentru texte dinamice care se actualizează în urma acțiunilor utilizatorului.
Proprietăți esențiale
lblStatus.Text = "Niciun contact.";
lblStatus.AutoSize = true;
lblStatus.Font = new Font("Segoe UI", 9f);
lblStatus.ForeColor = Color.DarkGray;AutoSize, care implicit este true pentru Label, face ca dimensiunea controlului să se ajusteze automat în funcție de textul afișat. Dacă vrei un Label cu dimensiune fixă, de exemplu pentru o bară de status cu lățime constantă, setezi AutoSize = false și specifici Size explicit.
Actualizarea în cod
Label-ul este actualizat din orice event handler prin atribuirea proprietății Text:
Actualizarea este instantanee și vizibilă imediat utilizatorului. Nu este nevoie de nicio metodă de refresh sau de repaint explicit.
TextBox
TextBoxTextBox este câmpul de introducere a textului de bază. Utilizatorul poate scrie în el, modifica conținutul și, dacă nu este setat altfel, poate lipi text din clipboard.
Proprietăți esențiale
PlaceholderText afișează un text gri în câmp când acesta este gol, dispărând automat când utilizatorul începe să scrie. Este disponibil în .NET Framework 4.7 și versiuni ulterioare. Proprietatea MaxLength limitează numărul de caractere pe care utilizatorul le poate introduce, fără a necesita validare suplimentară.
Proprietatea Multiline = true permite introducerea de text pe mai multe rânduri. Câmpurile ScrollBars și WordWrap devin relevante în acest caz.
Citirea și setarea valorii
În practică, citirea textului dintr-un TextBox se face aproape întotdeauna cu .Trim() aplicat imediat, pentru a elimina spațiile accidentale de la margini:
Aceasta este o regulă de igienă: utilizatorii introduc frecvent spații accidentale, iar codul care nu le elimină produce date inconsistente.
Evenimentul TextChanged
TextChangedSe declanșează la fiecare modificare a textului, inclusiv la fiecare tastă apăsată. Este evenimentul potrivit pentru funcționalități care răspund în timp real la ce scrie utilizatorul, cum este căutarea incrementală:
Observă că filtrarea operează pe lista din memorie (contacte) și actualizează ListBox-ul, fără a modifica lista. Datele din memorie rămân intacte și se schimbă doar ce se afișează.
Button
ButtonButton este elementul de acțiune principal. Utilizatorul dă click pe el pentru a declansa o operație.
Proprietăți esențiale
Proprietatea Enabled, când este false, face butonul vizibil dar nefuncțional: utilizatorul îl vede dar nu poate interacționa cu el. Aceasta este modalitatea standard de a comunica că o acțiune nu este disponibilă în contextul curent, fără a ascunde complet butonul.
Evenimentul Click
ClickCel mai folosit eveniment al unui buton. Se abonează cel mai simplu dând dublu-click pe buton în Designer, ceea ce generează automat handler-ul:
Un handler de buton bine scris nu conține logică propriu-zisă. El apelează o metodă care conține logica. Această separare este tratată în detaliu în capitolul despre best practices.
Parametrul sender
senderToți event handlerii WinForms primesc object sender ca prim parametru. sender este controlul care a declanșat evenimentul. Tipul declarat este object, dar obiectul real este controlul concret: un Button, un TextBox etc.
Dacă același handler este abonat la mai multe controale, sender îți permite să identifici care anume a generat evenimentul:
Dacă ai nevoie de proprietăți specifice controlului, faci cast:
Last updated