Grafikus C# – Windows Forms tanfolyam › 2.9 lecke Windows Forms · 2.9 lecke Minden komolyabb program tartalmaz egy „Névjegy” (About) ablakot, amelyből kiderül, ki készítette. A MiniWordhöz két ilyen dolgot adunk: egy névmezőt, amelybe beírt nevet felugró ablak mutatja meg, és egy About menüt, amely megmutatja a készítő nevét, a dátumot és a tanár nevét.Névmező, felugró ablak és About menü

A lecke végére
- egy beviteli mezőbe írt szöveget felugró ablakban jelenítesz meg;
- kezeled az üres és a szóközökkel kitöltött mezőt (
Trim()); - létrehozol egy
MenuStripmenüsort File és About menüvel; - az About menüben megjeleníted a készítő nevét, a dátumot és a tanár nevét;
- a sortörést
Environment.NewLinesegítségével illeszted az üzenetbe; - a Kilépés menüponttal bezárod az ablakot.
Mielőtt elkezded
Ehhez a leckéhez kell a MiniWord a 2.8 lecke után, a MessageBox és az if–else ismerete, valamint a menüsor alapjai.
A névmező és a gomb
Tegyél a MiniWord ablakára egy beviteli mezőt és egy gombot:
TextBox: ide írja be a felhasználó a tanár nevét (vagy bármilyen nevet).Név megjelenítése felirattal: ennek megnyomására ugrik fel az ablak.Mit tegyél ide: a MiniWord felső sora a txtTanar mezővel és a Név megjelenítése gombbal. A mezőben egy példanév (például „Nagy Péter”) látszik.Javasolt fájlnév: winforms-2-9-nevmezo.webp · Alt szöveg: A MiniWord névmezője és a név megjelenítése gomb
A felugró ablak
A felugró ablakot a MessageBox.Show() hívja elő. A beírt szöveget a Text tulajdonsággal olvassuk ki. A Trim() metódus levágja a szöveg elejéről és végéről a szóközöket, így a csupa szóközből álló mezőt is üresnek tekintjük.
private void btnNev_Click(object sender, EventArgs e)
{
string nev = txtTanar.Text.Trim();
if (nev.Length == 0)
{
MessageBox.Show("Kérlek, írj be egy nevet!");
}
else
{
MessageBox.Show("A beírt név: " + nev);
}
}Jósolj!
A névmezőbe csak három szóközt írsz, és megnyomod a gombot. Mit mutat a felugró ablak?
Jóslat ellenőrzése
A „Kérlek, írj be egy nevet!” üzenetet, mert a Trim() eltávolítja a szóközöket, és a név hossza 0 lesz.
Mit tegyél ide: a felugró üzenetablak „A beírt név: Nagy Péter” szöveggel, a MiniWord ablaka előtt.Javasolt fájlnév: winforms-2-9-nev-popup.webp · Alt szöveg: Felugró ablak a névmezőbe beírt névvel
Az About ablak
Az About menüpontra kattintva egy felugró ablak mutatja meg, ki készítette a programot és mikor, majd a Tanára: szöveg után a névmezőbe beírt nevet. Kattints duplán a menüpontra, így létrejön az eseménykezelő:
private void miAbout_Click(object sender, EventArgs e)
{
string tanar = txtTanar.Text.Trim();
if (tanar.Length == 0)
{
tanar = "(még nincs megadva)";
}
string uzenet = "MiniWord szövegszerkesztő" + Environment.NewLine
+ "Készítette: Minta Anna" + Environment.NewLine
+ "Dátum: 2026. október 24." + Environment.NewLine
+ "Tanára: " + tanar;
MessageBox.Show(uzenet, "About");
}Fix dátum, nem mai dátum
A feladat azt kéri, hogy az About ablak a program elkészítésének idejét mutassa, ezért a dátumot szövegként beírjuk. A DateTime.Now az aktuális időt adná meg, vagyis azt, hogy mikor nyitják meg az ablakot, ami nem ugyanaz.
Mit tegyél ide: az About felugró ablak négy sorral: „MiniWord szövegszerkesztő”, „Készítette: …”, „Dátum: …” és „Tanára: Nagy Péter” (a névmezőbe beírt név).Javasolt fájlnév: winforms-2-9-about.webp · Alt szöveg: Az About ablak a készítő nevével, a dátummal és a tanár nevével
Jósolj!
Az About ablak megnyitása előtt a névmezőbe beírod, hogy „Kiss Béla”. Nyitsd meg az About ablakot, majd írd át a nevet „Nagy Péter” névre, és nyisd meg újra. Mit látsz másodszor?
Jóslat ellenőrzése
A „Tanára: Nagy Péter” szöveget, mert az eseménykezelő minden megnyitáskor újra kiolvassa a névmező aktuális tartalmát.
A Kilépés menüpont
A Kilépés menüpont bezárja az ablakot. Kattints duplán a miKilepes menüpontra, és írd be:
private void miKilepes_Click(object sender, EventArgs e)
{
this.Close();
}A this.Close() bezárja az ablakot, ugyanúgy, mintha az X gombra kattintottál volna. Ha van FormClosing eseménykezelőd (0.8 lecke), az ilyenkor is lefut, ezért a megerősítő kérdés a menüből való kilépésnél is megjelenik.
Jósolj, aztán futtasd!
Minden feladatnál először írd le, mit vársz, és csak utána próbáld ki.
1. Üres névmező
A névmező üres, és megnyitod az About ablakot. Mit mutat a „Tanára:” sor? A „Tanára: (még nincs megadva)” szöveget, mert az üres nevet kicseréljük egy helyettesítő szövegre.Jóslat ellenőrzése
2. A Kilépés menüpont
A programban van FormClosing eseménykezelő, amely rákérdez a kilépésre. A File → Kilépés menüpontra kattintasz. Megjelenik a kérdés? Igen, mert a Jóslat ellenőrzése
Close() metódus is kiváltja a FormClosing eseményt.
3. Hosszú név
A névmezőbe egy nagyon hosszú nevet írsz. Mi történik az About ablakkal? Az üzenetablak szélesebb lesz, vagy a szöveg több sorba törik. A program nem hibázik, mert a szöveg hossza nincs korlátozva.Jóslat ellenőrzése
Hibakeresés: te vagy a hibadetektív
Hibavadászat
Jósold meg, hogy fordítási hiba, futás közbeni hiba vagy rossz működés lesz-e. Csak utána nyisd le a megoldást.
1. Furcsa szöveg a név helyett
MessageBox.Show("Tanára: " + txtTanar);Hiba és javítás
Rossz működés: a felugró ablak „Tanára: System.Windows.Forms.TextBox, Text: ...” szöveget mutat, mert nem a szöveget, hanem magát a vezérlőt fűztük hozzá. Javítás: txtTanar.Text.
2. A menüpont nem csinál semmit
Az About menüpontra kattintasz, de nem jelenik meg ablak. Az eseménykezelő nincs összekötve a menüponttal. Kattints duplán az About menüpontra a tervezőben, hogy a Visual Studio létrehozza az összekötött Ok és javítás
miAbout_Click metódust, vagy a Properties ablak Events nézetében válaszd ki a Click sornál.
3. Minden egy sorban
string uzenet = "Készítette: Minta Anna" + "Dátum: 2026. október 24.";Hiba és javítás
Rossz működés: a két szöveg közé nem került sortörés, ezért összefolynak: „Készítette: Minta AnnaDátum: ...”. Javítás: tegyél közéjük Environment.NewLine-t.
4. Ismeretlen név
miAbout.Text = "About";
// CS0103: The name 'miAbout' does not exist in the current contextHiba és javítás
Fordítási hiba (CS0103): a menüpont (Name) tulajdonsága még az alapértelmezett (például aboutToolStripMenuItem). Írd át a Properties ablakban miAbout-ra, vagy használd a kódban a valódi nevet.
5. Üres név az About ablakban
Az About ablakban a „Tanára:” után nem áll semmi. Nincs név beírva a mezőbe, vagy a program nem ellenőrzi az üres értéket. Használd a leckében látott Ok és javítás
if (tanar.Length == 0) ellenőrzést, hogy ilyenkor helyettesítő szöveg jelenjen meg.
Mini projekt: a MiniWord névjegye
Állítsd össze a MiniWord névjegyét és a menüt:
- Névmező (
txtTanar) ésbtnNevgomb a felugró ablakkal. MenuStripFile (Megnyitás, Mentés, Kilépés) és About menüvel.- Az About ablak mutassa a saját neved, a dátumot és a „Tanára:” után a névmező tartalmát.
- A Kilépés menüpont zárja be az ablakot.
- Próbáld ki üres és kitöltött névmezővel is.
Mit tegyél ide: a kész MiniWord menüsorral és névmezővel, az About ablak megnyitva a háttérben látszó MiniWord előtt.Javasolt fájlnév: winforms-2-9-miniword-nevjegy.webp · Alt szöveg: A MiniWord About ablaka a készítő nevével és a tanár nevével
Önálló gyakorlófeladatok
Először készíts saját megoldást. A lenyitható rész csak ellenőrzéshez van.
1. Ikon az About ablakon
Az About ablakon jelenjen meg egy információs ikon, és az üzenetablak csak egy OK gombot mutasson.Egy lehetséges megoldás
MessageBox.Show(uzenet, "About", MessageBoxButtons.OK, MessageBoxIcon.Information);
2. A név az ablak címében
A Név megjelenítése gomb nyomására a név kerüljön az ablak címsorába is: MiniWord – Nagy Péter. Ezt az else ágba tedd, a MessageBox.Show sor mellé.Egy lehetséges megoldás
this.Text = "MiniWord – " + nev;
3. Mai dátum a címkén
Tegyél az ablakra egy Tedd a lblDatum címkét, amely a mai dátumot mutatja, például Ma: 2026. 10. 24..Egy lehetséges megoldás
lblDatum.Text = "Ma: " + DateTime.Now.ToString("yyyy. MM. dd.");Form1_Load eseménykezelőbe, hogy induláskor megjelenjen. A DateTime.Now az aktuális idő, a ToString("yyyy. MM. dd.") pedig a megadott formátumra alakítja.
Gyakorlótár: 6 további feladat
Három szinten gyakorolhatsz: alap, közepes és kihívás. A feladatokhoz egy txtTanar beviteli mező, egy btnNev gomb és egy MenuStrip kell. Csak a próbálkozás után nyisd le a megoldást.
Alap szint
1. A név felugró ablakban
A A btnNev gomb jelenítse meg a beírt nevet egy felugró ablakban. Üres névnél figyelmeztessen.Megoldás megnyitása
Trim() levágja a szóközöket, így a csak szóközből álló név is üresnek számít.private void btnNev_Click(object sender, EventArgs e)
{
string nev = txtTanar.Text.Trim();
if (nev.Length == 0)
{
MessageBox.Show("Kérlek, írj be egy nevet!", "Hiányzó adat", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
MessageBox.Show("A beírt név: " + nev);
}
2. About ablak
Az About menüpont ( A sorokat az miAbout) mutassa három sorban: a program nevét, a készítőt és a Tanára: sort a névmező tartalmával.Megoldás megnyitása
Environment.NewLine választja el. Ha a névmező üres, jelezzük, hogy a név még nincs megadva.private void miAbout_Click(object sender, EventArgs e)
{
string tanar = txtTanar.Text.Trim();
if (tanar.Length == 0)
{
tanar = "(még nincs megadva)";
}
MessageBox.Show("MiniWord szövegszerkesztő" + Environment.NewLine
+ "Készítette: Minta Anna" + Environment.NewLine
+ "Tanára: " + tanar, "About");
}
Közepes szint
3. A mai dátum az About ablakban
Az About ablak a Dátum: sorban mutassa a mai dátumot magyar formában (például 2026. október 25.), ne rögzített szöveget. A Megoldás megnyitása
DateTime.Today a mai dátum. A ToString("yyyy. MMMM d.") a formátumot adja meg: az MMMM a hónap teljes neve, ami magyar nyelvű Windowson magyarul jelenik meg. Ha a program elkészítésének napját szeretnéd mutatni, azt rögzített szövegként add meg, mert a mai dátum másnap már mást mutatna.string datum = DateTime.Today.ToString("yyyy. MMMM d.");
MessageBox.Show("Dátum: " + datum, "About");
4. A név megjegyzése
A név a gombnyomásra kerüljön egy mezőbe, és az About ablak csak ezt használja, akkor is, ha később átírják a mezőt, és nem nyomják meg újra a gombot. A név mezőben (Megoldás megnyitása
tanarNeve) tárolódik, amely a metódusok között is megmarad. A gomb rögzíti, az About csak olvassa.private string tanarNeve = "";
private void btnNev_Click(object sender, EventArgs e)
{
string nev = txtTanar.Text.Trim();
if (nev.Length == 0)
{
MessageBox.Show("Kérlek, írj be egy nevet!");
return;
}
tanarNeve = nev;
MessageBox.Show("Rögzítve: " + tanarNeve);
}
private void miAbout_Click(object sender, EventArgs e)
{
string tanar = tanarNeve.Length == 0 ? "(még nincs megadva)" : tanarNeve;
MessageBox.Show("Tanára: " + tanar, "About");
}
Kihívás szint
5. F1 gyorsbillentyű
Az About menüponthoz rendeld az Jelöld ki a F1 billentyűt. Hogyan, és mit kell tenned a kódban?Megoldás megnyitása
miAbout menüpontot, és a Properties ablakban a ShortcutKeys tulajdonságnál válaszd az F1 billentyűt (módosító nélkül). Kódot nem kell írnod: az F1 ugyanazt a Click eseménykezelőt hívja, amelyet a menüpont kattintása. A menü mellett megjelenik a gyorsbillentyű felirata.
6. Saját About ablak
Az egyszerű üzenetablak helyett készíts külön Új ablak: a projekten jobb gomb, Add → Form (Windows Forms), a neve AboutForm ablakot, amelynek van egy címsora, egy lblTanar felirata és egy Bezár gombja. A főablak adja át neki a tanár nevét.Megoldás megnyitása
AboutForm. Az új ablak konstruktora paraméterként kapja a nevet. A ShowDialog() addig tartja nyitva az ablakot, amíg be nem zárják, és közben a főablak nem használható. A using blokk a végén felszabadítja az ablak erőforrásait.public partial class AboutForm : Form
{
public AboutForm(string tanar)
{
InitializeComponent();
lblTanar.Text = "Tanára: " + tanar;
}
private void btnBezar_Click(object sender, EventArgs e)
{
this.Close();
}
}private void miAbout_Click(object sender, EventArgs e)
{
using (AboutForm ablak = new AboutForm(txtTanar.Text.Trim()))
{
ablak.ShowDialog();
}
}
Gyors önellenőrzés
Válaszolj fejben, és csak utána nyisd le a választ. Levágja a szöveg elejéről és végéről a szóközöket. A Sortörést tesz a szövegbe, hogy az üzenet több sorban jelenjen meg. Mert a program elkészítésének dátumát kell mutatnia, nem az aktuális időt. Bezárja az ablakot, és kiváltja a FormClosing eseményt. A menüpontra duplán kattintasz a tervezőben.1. Mit csinál a Trim()?
2. Hogyan olvasod ki a TextBox tartalmát?
Text tulajdonsággal, például txtTanar.Text.3. Mire való az Environment.NewLine?
4. Miért fix szöveg a dátum az About ablakban?
5. Mit csinál a this.Close()?
6. Hogyan hozod létre a menüpont eseménykezelőjét?
Mit tudsz már?
- Felugró ablakban megjelenítesz egy beírt nevet.
- Kezeled az üres és a szóközös mezőt a Trim segítségével.
- Létrehozol egy menüsort File és About menüvel.
- Az About ablakban megjeleníted a készítőt, a dátumot és a tanár nevét.
- A Kilépés menüponttal bezárod az ablakot.
Következő lecke: a MiniWord összeépítése
Minden darab megvan. A következő leckében összeállítjuk a teljes MiniWordöt: a menüpontok a megnyitást és a mentést is elvégzik, és végigpróbáljuk az egész programot.




