C#: primul formular și ciclul evenimentelor
Creează un formular Windows Forms complet și urmărește evenimentul Click. Înțelege pornirea aplicației, bucla de mesaje și diferența dintre stare și afișare.
În acest material
În consolă, programul citește și calculează într-o ordine stabilită de cod. Într-o aplicație grafică, utilizatorul decide când apasă un buton sau închide fereastra. Application.Run pornește bucla care primește aceste evenimente. Constructorul pregătește controalele, iar handlerii execută operații scurte ca răspuns la interacțiuni.
Cum lucrezi cu exemplul
Exemplul complet se compilează ca Windows Forms App pe .NET Framework 4.8, cu C# 7.3. Deschide Lesson.csproj din arhivă în Visual Studio pe Windows. Rulează scenariile descrise mai jos; verificarea compilării nu înlocuiește testarea ferestrei și a dispozitivelor folosite.
Descarcă sursele și instrucțiunile.
Ideea și pașii de implementare
Exemplul complet creează un formular, un buton și un label fără fișiere Designer ascunse. Pune întregul cod în Program.cs al unui proiect Windows Forms App (.NET Framework 4.8), cu un singur punct de intrare. Atributul STAThread este păstrat pentru serviciile Windows care cer acest model de apartament.
Numărul clickurilor este un câmp int, nu textul labelului. Handler-ul incrementează modelul, apoi actualizează afișarea. Controls.AddRange adaugă controalele în formular; simpla construire a unui Button nu îl face vizibil. Constructorul se termină înainte ca utilizatorul să înceapă interacțiunea.
Exemplu și rezultat așteptat
La pornire apare Clickuri: 0. Un click produce 1, iar trei clickuri produc 3. Minimizarea și restaurarea ferestrei nu resetează câmpul. Închiderea formularului principal încheie Application.Run și aplicația. O nouă pornire începe din nou de la zero, deoarece nu există persistare.
Application.Run → Utilizator: Click → count: 0 → 1 → Label: Clickuri: 1.Mărește schema ↗
Codul complet
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Windows.Forms;
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new LessonForm());
}
}
class LessonForm : Form
{
int count;
readonly Label output = new Label { Left=20, Top=70, Width=240, Text="Clickuri: 0" };
public LessonForm() {
Text="Primul formular"; ClientSize=new Size(360,140);
var button=new Button { Left=20,Top=20,Width=140,Text="Adauga un click",TabIndex=0 };
button.Click += (sender,e) => { count++; output.Text="Clickuri: " + count; };
Controls.AddRange(new Control[] { button,output });
}
}
Greșeli și limite
Nu pune o buclă infinită în constructor sau în Click: vei bloca procesarea mesajelor și fereastra nu va mai răspunde. Nu adăuga manual același handler dacă Designer-ul l-a abonat deja. Nu folosi textul labelului ca bază de date și nu încerca să îl parsezi la fiecare click.
Exersează
Adaugă un buton Reset care pune câmpul la zero și actualizează labelul. Testează trei clickuri, reset, apoi încă un click: rezultatul final trebuie să fie 1. Verifică apăsarea butonului și cu Tab urmat de Space. Explică de ce restaurarea ferestrei păstrează scorul, dar repornirea aplicației nu.
Continuă parcursul
Parcursul complet de 50 de lecții
Lecția precedentă: C#: testează modelul înainte de a desena interfața
Lecția următoare: C#: validarea formularului cu ErrorProvider.
Referință: documentația Microsoft.
Întrebări frecvente
De ce nu apare butonul creat?
Trebuie adăugat în colecția Controls a unui container vizibil și poziționat în zona lui.
Ce face Application.Run?
Pornește bucla de mesaje și ține aplicația activă cât timp formularul principal este deschis.
Unde păstrez numărul clickurilor?
În model sau într-un câmp numeric, apoi îl transformi în text pentru afișare.
Un pas mai departe
Autentifică-te pentru a păstra progresul în cont.