Grafikus C# – Windows Forms tanfolyam › 7.4 lecke Windows Forms · 7.4 lecke · felugró üzenetek A MessageBox különböző gombjai és DialogResult
MessageBox a legegyszerűbb párbeszédablak: egy kérdés vagy tájékoztatás, néhány gombbal. Az 1.2 leckében az OK gombos változatot ismerted meg. Most a teljes eszköztárat: a gombkészleteket, az ikonokat, az alapértelmezett gombot, a tulajdonos ablak megadását, a visszatérő DialogResult feldolgozását, és (talán a legfontosabbat) azt, mikor és hogyan érdemes üzenetet felhozni. A felesleges felugró ablak ugyanolyan rossz, mint a hiányzó figyelmeztetés.
A lecke végére
- ismered a
MessageBox.Showösszes paraméterét (felirat, gombok, ikon, alapértelmezett gomb, tulajdonos); - a helyes gombkészletet és ikont választod a helyzethez;
- a
DialogResultértékétswitchutasítással dolgozod fel; - veszélyes műveletnél biztonságos alapértelmezett gombot állítasz (
Button2); - érthető, a felhasználót segítő üzeneteket írsz;
- tudod, mikor jobb az állapotsor, a
ErrorProvidervagy a saját párbeszédablak.
Mielőtt elkezded
Ehhez a leckéhez az 1.2 lecke (MessageBox alapjai), a 6.7 lecke (DialogResult), az 5.8 lecke (switch) és a 7.3 lecke (állapotsor) szükséges.
A MessageBox.Show paraméterei
// a teljes alak: tulajdonos, szöveg, cím, gombok, ikon, alapértelmezett gomb
DialogResult v = MessageBox.Show(
this, // a tulajdonos ablak (az üzenet ennek közepén jelenik meg)
"Törlöd a kijelölt feladatot?", // az üzenet szövege
"Feladat törlése", // a címsor
MessageBoxButtons.YesNo, // a gombok
MessageBoxIcon.Warning, // az ikon
MessageBoxDefaultButton.Button2); // az alapértelmezett gomb: a második (Nem)| MessageBoxButtons | A gombok | Lehetséges DialogResult |
|---|---|---|
OK | OK | OK |
OKCancel | OK, Mégse | OK, Cancel |
YesNo | Igen, Nem | Yes, No |
YesNoCancel | Igen, Nem, Mégse | Yes, No, Cancel |
RetryCancel | Újra, Mégse | Retry, Cancel |
AbortRetryIgnore | Megszakítás, Újra, Kihagyás | Abort, Retry, Ignore |
| MessageBoxIcon | Mikor? |
|---|---|
Information (kék i) | Tájékoztatás: a művelet sikerült, vagy hasznos tudnivaló. |
Question (kérdőjel) | Kérdés: a felhasználó döntését kéri. A mai Windows-ajánlás szerint ritkán használd, a kérdés szövege elég. |
Warning (sárga háromszög) | Figyelmeztetés: a művelet veszélyes vagy visszafordíthatatlan (törlés, felülírás). |
Error (piros kör) | Hiba: a művelet nem sikerült. |
this) azt adja meg, melyik ablak fölött jelenjen meg az üzenet, és melyikhez tartozik. Ennek hiányában az üzenet más ablakok mögé kerülhet, vagy a tálcán külön ablakként jelenik meg. Mindig add meg (this).Button2 a Nem, vagy a Mégse), hogy egy véletlen Enter ne törölje az adatot.MessageBox modális: a hívó ablak mindaddig nem használható, a kód pedig nem halad tovább, amíg a felhasználó válaszol.Jósolj!
A törlés megerősítése YesNo gombokkal jelenik meg, de az alapértelmezett gomb az első (Igen), és a felhasználó gyorsan egymás után kétszer megnyomja az Enter billentyűt. Mi történik?
Jóslat ellenőrzése
Az első Enter (amellyel például a törlést kezdte) a megerősítő üzenetben az Igen gombot nyomja meg, és a törlés megtörténik: a felhasználó észre sem veszi, hogy kérdés volt. Veszélyes műveletnél ezért a Nem (MessageBoxDefaultButton.Button2) legyen az alapértelmezett.
Az eredmény feldolgozása
A Show metódus DialogResult értékkel tér vissza. Két-három lehetőségnél az if, több esetnél a switch áttekinthetőbb (5.8 lecke). A három leggyakoribb minta:
// 1. Megerősítés (YesNo, a Nem az alapértelmezett)
private bool Megerosit(string kerdes, string cim)
{
return MessageBox.Show(this, kerdes, cim, MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.Yes;
}
// 2. Mentetlen változtatás (YesNoCancel): három út
private bool BezarhatoE()
{
if (!modosult)
{
return true;
}
switch (MessageBox.Show(this, "Mented a változtatásokat?", "Bezárás", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning))
{
case DialogResult.Yes:
return Ment(); // ha a mentés sikertelen, nem zárunk
case DialogResult.No:
return true; // elvetjük
default:
return false; // Mégse (vagy az ablak bezárása): maradunk
}
}
// 3. Újrapróbálás (RetryCancel): ciklus a hiba kijavításáig
private bool BiztosanMent(string utvonal, string tartalom)
{
while (true)
{
try
{
File.WriteAllText(utvonal, tartalom);
return true;
}
catch (IOException ex)
{
string szoveg = "A fájl nem menthető." + Environment.NewLine + "Lehet, hogy egy másik program használja. Zárd be, majd próbáld újra."
+ Environment.NewLine + Environment.NewLine + ex.Message;
if (MessageBox.Show(this, szoveg, "Mentés", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error) == DialogResult.Cancel)
{
return false;
}
}
}
}YesNoCancel esetén a Cancel a bezáró X gomb eredménye is. A default ág a „biztonságos” viselkedést adja (maradunk).RetryCancel ciklusban a kivételt kezeljük, a felhasználó dönt: újra vagy mégse. Végtelen ciklus veszélye nincs, mert a Mégse kilép.MessageBox szövegben: Environment.NewLine (nem kell \n jel, így a kód olvasható). Hosszabb szöveg is tördelődik.bool-t ad: a hívó eldönti, folytathatja-e (bezárás, új dokumentum).Jósolj!
A BezarhatoE metódusban a case DialogResult.Yes ágban a mentés sikertelen (Ment() hamisat ad), de a kód nem ellenőrzi az eredményt, és mindig true-t ad vissza. Mi történik?
Jóslat ellenőrzése
Az ablak bezárul a mentetlen adattal: a felhasználó azt hitte, mentett, de nem sikerült. Ezért a mentés eredményét mindig vizsgálni kell, és sikertelen mentésnél nem szabad továbbmenni.
Hogyan írj jó üzenetet?
| Szabály | Rossz | Jó |
|---|---|---|
| Mondd meg, mi történt | „Hiba történt.” | „A fájl nem menthető.” |
| Mondd meg, mit tegyen | „Érvénytelen bevitel.” | „Az e-mail címnek tartalmaznia kell a @ jelet.” |
| A kérdés egyértelmű, a gombok illeszkednek | „Biztos?” + Igen/Nem | „Törlöd a kijelölt feladatot?” + Igen/Nem |
| Emberi nyelv | „NullReferenceException a Form1.cs 142. sorában.” | „Nem sikerült megnyitni a fájlt. Ellenőrizd, hogy létezik-e.” |
| Ne hibáztass | „Rossz jelszót adtál meg!” | „A felhasználónév vagy a jelszó nem megfelelő.” |
| Rövid | Három bekezdés magyarázat | Egy-két mondat; a részletek külön (napló, súgó) |
A technikai hiba a naplónak való
A felhasználónak az érthető üzenet kell, a fejlesztőnek a részletes kivétel (ex.ToString()). A kettőt válaszd szét: a felhasználónak a barátságos szöveg, a részletek a naplóba (13. fejezet) vagy egy Részletek gombos saját ablakba. A ex.Message a hibakereséshez hasznos, de nem mindig érthető a felhasználónak.
Jósolj!
Egy program minden apró eseményről (mentés, megnyitás, kész a keresés) MessageBox-ot dob fel. Mit tapasztal a felhasználó néhány perc használat után?
Jóslat ellenőrzése
Rászokik, hogy mindent azonnal bezár (nem olvassa el), és a valóban fontos üzenetet is elnyomja ugyanígy. A felugró ablak megszakítja a munkát: tartogasd a fontos döntésekre és hibákra, a többit az állapotsor (7.3 lecke) jelezze.
Mikor NE MessageBox-ot használj?
| Helyzet | Jobb megoldás |
|---|---|
| Sikeres mentés, kész a keresés (nem kritikus visszajelzés). | Állapotsor ideiglenes üzenete (7.3). |
| Hibás űrlapmező. | ErrorProvider a mező mellett + fókusz (6.6). |
| Több bemenet és saját gombfeliratok kellenek (Mentés, Elvetés, Mégse). | Saját párbeszédablak (7.6 lecke); a MessageBox gombfeliratai nem módosíthatók. |
| „Ne kérdezd többet” jelölőnégyzet vagy részletes szöveg kell. | Saját párbeszédablak; az újabb .NET-ben a TaskDialog osztály is lehet (verziófüggő). |
| Hosszú művelet haladása. | Haladásjelző az állapotsorban vagy saját ablak (11. fejezet). |
Mit tegyél ide: három üzenet egymás mellett: tájékoztatás (kék i), figyelmeztetés (sárga háromszög, a Nem kiemelve) és hiba (piros), megfelelő szöveggel.Javasolt fájlnév: winforms-7-4-uzenetek.webp · Alt szöveg: Információs, figyelmeztető és hibaüzenet
Hibakeresés: te vagy a hibadetektív
Mi a baj, és hogyan javítod?
Gondold végig az okot, és csak utána nyisd le a megoldást.
1. Az Enter véletlenül töröl
MessageBox.Show("Törlöd?", "Törlés", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); // az alapértelmezett gomb az IgenHiba és javítás
Adj meg alapértelmezett gombot: MessageBoxDefaultButton.Button2 (Nem).
2. Az üzenet másik ablak mögött marad
Az üzenet nem látszik, a program „lefagyottnak” tűnik. A Ok és javítás
MessageBox tulajdonos nélkül (az első paraméter hiányzik) más ablak mögé kerülhet, miközben a program modális állapotban vár. Mindig add meg a tulajdonost: MessageBox.Show(this, ...).
3. Az eredményt nem vizsgálja a kód
MessageBox.Show("Kilépsz?", "Kilépés", MessageBoxButtons.YesNo);
this.Close(); // a Nem gomb esetén is bezárHiba és javítás
A kérdésnek nincs hatása. Hasonlítsd az eredményt: if (MessageBox.Show(...) == DialogResult.Yes) { this.Close(); }.
4. A felhasználó nem érti az üzenetet
A hibaüzenet kivételszöveget mutat. A technikai részletet naplózd, a felhasználónak írj emberi mondatot: mi történt, és mit tegyen (lásd a szabálytáblát).Ok és javítás
5. Túl sok felugró ablak
Minden sikeres művelet után üzenet jelenik meg. A nem kritikus visszajelzést tedd az állapotsorba (7.3 lecke). A Ok és javítás
MessageBox a döntésekre és a hibákra való.
6. A mentés sikertelen, mégis bezárul az ablak
A felhasználó azt hiszi, mentett. A mentés eredményét (Ok és javítás
bool) nem vizsgálod. Sikertelen mentésnél a bezárás szakadjon meg (e.Cancel = true, vagy a metódus false értékkel tér vissza).
Mini projekt: üzenetlabor
Készíts programot, amellyel kipróbálhatod a MessageBox összes beállítását, és négy valós helyzet mintáját:
- Kísérleti lap: egy
GroupBoxhat választógombbal a gombkészlethez (Tag:OK,OKCancel,YesNo,YesNoCancel,RetryCancel,AbortRetryIgnore), egyGroupBoxöt választógombbal az ikonhoz (None,Information,Question,Warning,Error), egyComboBoxaz alapértelmezett gombhoz (1., 2., 3.; csak annyi, ahány gomb van), egytxtCim, egytxtSzovegés egy Megmutat gomb. Az eredmény egylblEredmenycímkében (Választott gomb: Yes) és egy naplólistában (a legutóbbi 10). - A gombkészlet és az ikon értékét az
Enum.Parseadja aTagszövegéből. - Helyzetek lap: négy gomb: Mentetlen változtatás (
YesNoCancel), Törlés megerősítése (YesNo,Button2), Fájl felülírása (OKCancel), Mentési hiba (RetryCancelciklus: egy szimulált hiba az első két próbálkozásnál, a harmadiknál sikerül). - Minden helyzet a
switchutasítással dolgozza fel az eredményt, és az állapotsorban jelzi a következményt (Elvetve, Törölve, Mentve a 3. próbálkozásra). - Teszteld: minden gombkészlet, az alapértelmezett gomb kiválasztása, a bezáró X (milyen eredményt ad), és az Enter / Esc viselkedése.
Megoldás megnyitása (próbáld ki előbb önállóan!)
Az alapértelmezett gomb választó csak annyi elemet kínál, ahány gombja van a kiválasztott készletnek: az OK egyet, az OKCancel, YesNo, RetryCancel kettőt, a másik kettő hármat.
private int proba = 0;
private void Form1_Load(object sender, EventArgs e)
{
rbOK.Tag = "OK"; rbOKCancel.Tag = "OKCancel"; rbYesNo.Tag = "YesNo";
rbYesNoCancel.Tag = "YesNoCancel"; rbRetryCancel.Tag = "RetryCancel"; rbAbortRetryIgnore.Tag = "AbortRetryIgnore";
rbNincs.Tag = "None"; rbInfo.Tag = "Information"; rbKerdes.Tag = "Question";
rbFigyelmeztet.Tag = "Warning"; rbHiba.Tag = "Error";
rbOK.Checked = true;
rbInfo.Checked = true;
GombSzam();
}
private string Valasztott(GroupBox csoport)
{
foreach (Control c in csoport.Controls)
{
RadioButton rb = c as RadioButton;
if (rb != null && rb.Checked)
{
return rb.Tag.ToString();
}
}
return "OK";
}
private void GombSzam()
{
string k = Valasztott(grpGombok);
int db = k == "OK" ? 1 : (k == "YesNoCancel" || k == "AbortRetryIgnore" ? 3 : 2);
cmbAlap.Items.Clear();
for (int i = 1; i <= db; i++)
{
cmbAlap.Items.Add(i + ". gomb");
}
cmbAlap.SelectedIndex = 0;
}
private void Gombok_CheckedChanged(object sender, EventArgs e)
{
if (((RadioButton)sender).Checked)
{
GombSzam();
}
}
private void btnMutat_Click(object sender, EventArgs e)
{
MessageBoxButtons gombok = (MessageBoxButtons)Enum.Parse(typeof(MessageBoxButtons), Valasztott(grpGombok));
MessageBoxIcon ikon = (MessageBoxIcon)Enum.Parse(typeof(MessageBoxIcon), Valasztott(grpIkon));
MessageBoxDefaultButton alap = MessageBoxDefaultButton.Button1;
if (cmbAlap.SelectedIndex == 1) { alap = MessageBoxDefaultButton.Button2; }
else if (cmbAlap.SelectedIndex == 2) { alap = MessageBoxDefaultButton.Button3; }
DialogResult v = MessageBox.Show(this, txtSzoveg.Text, txtCim.Text, gombok, ikon, alap);
lblEredmeny.Text = "Választott gomb: " + v;
lstNaplo.Items.Insert(0, DateTime.Now.ToString("HH:mm:ss") + " – " + gombok + ", " + ikon + " → " + v);
while (lstNaplo.Items.Count > 10)
{
lstNaplo.Items.RemoveAt(lstNaplo.Items.Count - 1);
}
}
private void btnMentetlen_Click(object sender, EventArgs e)
{
switch (MessageBox.Show(this, "Mented a változtatásokat?", "Bezárás", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning))
{
case DialogResult.Yes: tsslUzenet.Text = "Mentve."; break;
case DialogResult.No: tsslUzenet.Text = "Elvetve."; break;
default: tsslUzenet.Text = "Maradunk."; break;
}
}
private void btnTorles_Click(object sender, EventArgs e)
{
bool igen = MessageBox.Show(this, "Törlöd a kijelölt feladatot?", "Feladat törlése", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.Yes;
tsslUzenet.Text = igen ? "Törölve." : "A törlés elmaradt.";
}
private void btnFeluliras_Click(object sender, EventArgs e)
{
DialogResult v = MessageBox.Show(this, "A fájl már létezik. Felülírod?", "Mentés", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);
tsslUzenet.Text = v == DialogResult.OK ? "Felülírva." : "A mentés megszakítva.";
}
private void btnHiba_Click(object sender, EventArgs e)
{
proba = 0;
while (true)
{
proba = proba + 1;
if (proba >= 3) // a szimuláció: a harmadik próbálkozásra sikerül
{
tsslUzenet.Text = "Mentve a " + proba + ". próbálkozásra.";
return;
}
string szoveg = "A fájl nem menthető. Lehet, hogy egy másik program használja." + Environment.NewLine + "Zárd be, majd próbáld újra.";
if (MessageBox.Show(this, szoveg, "Mentés", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error) == DialogResult.Cancel)
{
tsslUzenet.Text = "A mentés megszakítva (" + proba + ". próbálkozás).";
return;
}
}
}Mit tegyél ide: az üzenetlabor: a beállítók, az eredmény és a napló néhány sorral.Javasolt fájlnév: winforms-7-4-kesz.webp · Alt szöveg: Az üzenetlabor program
Három önálló gyakorlófeladat
Egyszerre csak egyet csinálj: tervezd meg, írd meg, futtasd, ellenőrizd, és csak utána nyisd ki a megoldást.
1. Kilépés megerősítése
A főablak bezárásakor, ha van mentetlen adat, kérdezzen a program A YesNoCancel üzenettel. Hol kezeled, és mit teszel a Mégse eredménnyel?Egy lehetséges megoldás
FormClosing eseményben (5.6 lecke), UserClosing esetén. A Mégse és a sikertelen mentés e.Cancel = true értéket ad.private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (!modosult || e.CloseReason != CloseReason.UserClosing)
{
return;
}
switch (MessageBox.Show(this, "Mented a változtatásokat?", "Kilépés", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning))
{
case DialogResult.Yes:
if (!Ment()) { e.Cancel = true; }
break;
case DialogResult.No:
break;
default:
e.Cancel = true;
break;
}
}
2. Közös megerősítő metódus
Írj A programban egységes marad a viselkedés, és az alapértelmezett gomb szabálya egy helyen van.Megerosit(szöveg, cím, veszelyes) metódust, amely a veszélyes műveletnél a Nem gombot teszi alapértelmezetté és Warning ikont használ, a nem veszélyesnél Question ikont és az Igen alapértelmezett. Miért érdemes a metódus?Egy lehetséges megoldás
private bool Megerosit(string szoveg, string cim, bool veszelyes)
{
return MessageBox.Show(this, szoveg, cim, MessageBoxButtons.YesNo,
veszelyes ? MessageBoxIcon.Warning : MessageBoxIcon.Question,
veszelyes ? MessageBoxDefaultButton.Button2 : MessageBoxDefaultButton.Button1) == DialogResult.Yes;
}
3. Üzenet átírása
Írd át három rossz üzenetet jóvá: „Hiba!”, „Biztos vagy benne?”, „Exception at line 87”. Milyen szabályt követsz? (1) „A mentés nem sikerült: a lemez tele van. Szabadíts fel helyet, majd próbáld újra.” (2) „Törlöd a kijelölt 3 fájlt? A művelet nem vonható vissza.” (3) „A fájl nem nyitható meg. Ellenőrizd, hogy létezik-e, és nem használja-e másik program.” Mindhárom megmondja, mi történt, és mit tegyen a felhasználó.Egy lehetséges megoldás
Gyakorlótár: 6 további feladat
Három szinten gyakorolhatsz: alap, közepes és kihívás. Csak a próbálkozás után nyisd le a megoldást.
Alap szint
1. Gombok és eredmények
Melyik A MessageBoxButtons adhat Retry eredményt?Megoldás megnyitása
RetryCancel és az AbortRetryIgnore.
2. Ikon választás
Melyik ikont használod: (a) sikeres telepítés; (b) fájl felülírása; (c) a hálózat nem elérhető? (a) Megoldás megnyitása
Information; (b) Warning; (c) Error.
Közepes szint
3. A bezáró X eredménye
Mit ad vissza a Az X gomb (és az Esc) MessageBox.Show, ha a felhasználó a bezáró X gombra kattint egy YesNo üzenetnél? Hogyan kezeli ezt a kódod?Megoldás megnyitása
YesNo gombkészletnél általában nem működik (nincs Mégse gomb), ezért a felhasználónak választania kell. YesNoCancel, OKCancel, RetryCancel esetén az X a Cancel eredményt adja. A kódban a default ág kezelje a biztonságos esetet. A pontos viselkedést a Windows adja, érdemes kipróbálni.
4. Eredmény szövegben
Készíts metódust, amely a A DialogResult értéket magyar szöveggé alakítja (Igen, Nem, Mégse…). Melyik szerkezet a legáttekinthetőbb?Megoldás megnyitása
switch utasítás.private string Szoveg(DialogResult v)
{
switch (v)
{
case DialogResult.OK: return "OK";
case DialogResult.Cancel: return "Mégse";
case DialogResult.Yes: return "Igen";
case DialogResult.No: return "Nem";
case DialogResult.Retry: return "Újra";
case DialogResult.Abort: return "Megszakítás";
case DialogResult.Ignore: return "Kihagyás";
default: return "(nincs)";
}
}
Kihívás szint
5. Ne kérdezd többet
Egy megerősítő kérdésnél a felhasználó kérheti, hogy a program többet ne kérdezzen. Miért nem lehet ez A MessageBox-szal, és hogyan oldod meg saját ablakkal?Megoldás megnyitása
MessageBox nem tartalmaz jelölőnégyzetet. Egy saját KerdesForm (7.6 lecke) kell, amelynek van NeKerdezzTobbet tulajdonsága, és a hívó ezt a beállítást megőrzi (Settings).private bool Torles()
{
if (Properties.Settings.Default.NemKerdez)
{
return true; // a felhasználó kérte, hogy ne kérdezzünk
}
using (KerdesForm ablak = new KerdesForm("Törlöd a feladatot?"))
{
bool igen = ablak.ShowDialog(this) == DialogResult.Yes;
if (igen && ablak.NeKerdezzTobbet)
{
Properties.Settings.Default.NemKerdez = true;
Properties.Settings.Default.Save();
}
return igen;
}
}
6. Kivételkezelő segédmetódus
Írj A felhasználó a „mit próbáltál” szöveget és egy rövid útmutatót lát, a naplóba a teljes HibaMutat(string mitProbaltal, Exception ex) metódust: a felhasználónak barátságos üzenetet mutat, a technikai részletet egy naplófájlba írja. Hol tartod a kettő határát?Megoldás megnyitása
ex.ToString() kerül időponttal (13. fejezet). A naplózás maga is hibázhat, ezért védeni kell.private void HibaMutat(string mitProbaltal, Exception ex)
{
try
{
System.IO.File.AppendAllText("hibak.log", DateTime.Now + " – " + mitProbaltal + Environment.NewLine + ex + Environment.NewLine + Environment.NewLine);
}
catch
{
// a naplózási hiba ne okozzon újabb hibát
}
MessageBox.Show(this, "Nem sikerült: " + mitProbaltal + "." + Environment.NewLine + "A részleteket a hibak.log fájl tartalmazza.", "Hiba", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
Gyors önellenőrzés
Válaszolj fejben, és csak utána nyisd le a választ. Egy Hogy az üzenet az ablak fölött jelenjen meg, és ne kerüljön más ablak mögé. Veszélyes vagy visszafordíthatatlan műveletnél (törlés, felülírás), hogy egy véletlen Enter ne hajtsa végre. Mi történt, és mit tegyen a felhasználó. Nem kritikus visszajelzésnél (állapotsor), mezőhibánál ( Az ablak bezárul a mentetlen adattal. Mindig vizsgáld a mentés eredményét.1. Mit ad vissza a MessageBox.Show?
DialogResult értéket: azt a gombot, amelyet a felhasználó választott.2. Miért kell megadni a tulajdonost (this)?
3. Mikor legyen a Nem az alapértelmezett gomb?
4. Melyik gombkészlet való mentetlen változtatáshoz?
YesNoCancel: mentés, elvetés vagy marad.5. Mi egy jó hibaüzenet két része?
6. Mikor ne használj MessageBox-ot?
ErrorProvider), és amikor saját gombfeliratok vagy jelölőnégyzet kell (saját ablak).7. Mi történik, ha a mentés sikertelen, de nem vizsgálod az eredményt?
Mit tudsz már?
- Ismered a
MessageBox.Showösszes paraméterét és a gombkészleteket. - A
DialogResultértékét feldolgozod, és biztonságos alapértelmezett gombot választasz. - Érthető, segítő üzeneteket írsz.
- Tudod, mikor jobb az állapotsor, az
ErrorProvidervagy a saját ablak. - Újrapróbálás ciklust és mentetlen változtatás kezelést építesz.
Következő lecke: Form.Show és Form.ShowDialog
Több ablak a programban: nem modális és modális ablakok, a tulajdonos kapcsolat és az ablakok élettartama.




