Grafikus C# – Windows Forms tanfolyam › 2.2 lecke

Windows Forms · 2.2 lecke

OpenFileDialog – RTF és TXT fájl megnyitása

A MiniWord eddig csak azt tudta, amit beleírtál. Most megtanítjuk fájlokat megnyitni: a felhasználó kiválaszt egy RTF vagy TXT fájlt, a program pedig megjeleníti a tartalmát. Közben azt is megnézzük, mit tegyen a program, ha a fájl nem olyan, mint amire számított.

  • kb. 60–75 perc
  • kezdő szint
  • fájlmegnyitás
Diák C# programozást gyakorol egy tanulósarokban

A lecke végére

  • elhelyezel egy OpenFileDialog komponenst, és beállítod a fájlszűrőt;
  • érted, mit ad vissza a ShowDialog(), és mit tegyen a program Mégse esetén;
  • LoadFile() segítségével megnyitsz egy RTF fájlt formázással együtt;
  • szöveges fájlt töltesz be a File.ReadAllText() segítségével;
  • a fájl kiterjesztése alapján döntesz, hogyan nyisd meg;
  • a try–catch szerkezettel kezeled, ha a megnyitás nem sikerül.

Mielőtt elkezded

Ehhez a leckéhez kell a 2.1 lecke MiniWord projektje, valamint az if–else szerkezet és a string alapjai.

2.1 RichTextBox és TextChanged →

Feltételek: if és else →

Készíts tesztfájlokat

Hogy legyen mit megnyitni, készíts a gépeden három kis fájlt, például egy Teszt nevű mappában:

  1. szia.txt: Jegyzettömbben (Notepad) írd bele, hogy Árvíztűrő tükörfúrógép, és mentsd el.
  2. teszt.rtf: Wordben vagy LibreOffice Writerben írj néhány mondatot, formázz meg egy szót félkövérre, majd mentsd el Rich Text Format (*.rtf) típusként.
  3. teszt.docx: ugyanezt a dokumentumot mentsd el Word dokumentumként (.docx) is.
📷 Képernyőkép helye

Mit tegyél ide: a Word „Mentés másként” ablaka, amelyben a fájltípus legördülő listájából a „Rich Text Format (*.rtf)” van kiválasztva, a fájlnév mezőben pedig a teszt szó látszik.Javasolt fájlnév: winforms-2-2-rtf-mentes.webp · Alt szöveg: Dokumentum mentése Rich Text Format típusként a Wordben

Te jössz!

Készítsd el a három fájlt. Jegyezd meg, hol vannak, mert ezeket fogjuk megnyitni a MiniWord segítségével.

Az OpenFileDialog komponens

A fájlválasztó ablakot, amelyet minden programban ismersz, nem nekünk kell megrajzolni. A Windows adja, nekünk csak meg kell nyitnunk és beállítanunk. A neve OpenFileDialog.

  1. Nyisd meg a MiniWord projektet, és húzd az ablakra egy Button-t: (Name): btnMegnyitas, Text: Megnyitás. Tedd a RichTextBox fölé, és ha kell, told lejjebb a szövegdobozt.
  2. A Toolboxban nyisd ki a Dialogs csoportot, és húzd az ablakra az OpenFileDialog elemet.
  3. Nem az ablakon jelenik meg, hanem alul, a tervező komponenssávjában. Ez rendben van: nem látható vezérlő, csak akkor jelenik meg, amikor megnyitjuk.
  4. Állítsd a (Name) tulajdonságát ofdMegnyitas-ra.
📷 Képernyőkép helye

Mit tegyél ide: a MiniWord Designer nézete. Fent a Megnyitás gomb, alatta a RichTextBox, az ablak alatti komponenssávban pedig az ofdMegnyitas ikon látszik. Ha tudsz, tegyél mellé egy képet a Toolbox Dialogs csoportjáról is.Javasolt fájlnév: winforms-2-2-openfiledialog-komponens.webp · Alt szöveg: Az OpenFileDialog komponens a Visual Studio tervezőjének komponenssávjában

ofdMegnyitasA fájlválasztó ablak, amelyet a programból nyitunk meg. Az ofd az OpenFileDialog rövidítése.
FilterAzt adja meg, milyen fájltípusokat lát a felhasználó a listában.
TitleAz ablak címsora, például Dokumentum megnyitása.
FileNameA kiválasztott fájl teljes elérési útja, például C:\Teszt\teszt.rtf. Csak a kiválasztás után van értéke.

A fájlszűrő: Filter

A szűrő egyetlen szöveg, amelyben párokat adunk meg függőleges vonallal (|) elválasztva: az első elem a felirat, amelyet a felhasználó lát, a második a minta, amely szerint a program szűr. Fontos, hogy mindig páros számú elem legyen.

Form1.csC#
ofdMegnyitas.Filter = "RTF dokumentum (*.rtf)|*.rtf|Word dokumentum (*.docx)|*.docx|Szövegfájl (*.txt)|*.txt|Minden fájl (*.*)|*.*";
RTF dokumentum (*.rtf)A felirat: ezt látja a felhasználó a legördülő listában.
*.rtfA minta: csak az .rtf végű fájlokat mutatja.
|Elválasztja a feliratot a mintától, és a párokat egymástól.
*.*Bármilyen fájlnév, bármilyen kiterjesztéssel, tehát minden fájl.

Jósolj!

Mit fog mutatni a fájlválasztó, amikor megnyílik, és melyik fájltípus lesz alapértelmezetten kiválasztva?

Jóslat ellenőrzése

Az első pár, tehát az RTF dokumentum lesz kiválasztva, és csak az .rtf fájlokat látod. A legördülő listából átválthatsz Word, szöveges vagy minden fájl nézetre. Az első pár helyett másikat a FilterIndex tulajdonsággal állíthatsz be alapértelmezettnek.

Mégse vagy OK?

A ShowDialog() megnyitja a fájlválasztó ablakot, és megvárja, amíg a felhasználó bezárja. Visszaadja, melyik gombbal tette: DialogResult.OK, ha a Megnyitás gombbal, és DialogResult.Cancel, ha a Mégse gombbal vagy az ablak bezárásával. Csak akkor szabad fájlt megnyitni, ha az eredmény OK.

Form1.csC#
if (ofdMegnyitas.ShowDialog() == DialogResult.OK)
{
// itt van kiválasztott fájl: ofdMegnyitas.FileName
}

Mi történjen Mégse esetén?

Semmi. A felhasználó meggondolta magát, a dokumentum maradjon úgy, ahogy volt. Az if ezért csak az OK ágat tartalmazza, az else ág nem kell.

RTF és TXT betöltése

Kétféle fájlt tudunk megnyitni, és mindkettőhöz másik módszer kell:

RTF fájlrtbDokumentum.LoadFile(fajl, RichTextBoxStreamType.RichText) betölti a szöveget a formázásával együtt.
TXT fájlrtbDokumentum.Text = File.ReadAllText(fajl) beolvassa a fájl teljes tartalmát szövegként, és beírja a szövegdobozba.
Path.GetExtension(fajl)Kiszedi a fájl nevéből a kiterjesztést, például .rtf.
.ToLower()Kisbetűssé alakítja, hogy a .RTF és az .rtf ugyanazt jelentse.

Hogy a kódot a menüből is meg lehessen hívni (a 2.10 leckében), egy saját metódusba tesszük, amelynek a neve Megnyitas. A metódus egy névvel ellátott kódblokk: a gomb eseménykezelője csak meghívja.

Form1.csC#
private void btnMegnyitas_Click(object sender, EventArgs e)
{
Megnyitas();
}

private void Megnyitas()
{
ofdMegnyitas.Title = "Dokumentum megnyitása";
ofdMegnyitas.Filter = "RTF dokumentum (*.rtf)|*.rtf|Word dokumentum (*.docx)|*.docx|Szövegfájl (*.txt)|*.txt|Minden fájl (*.*)|*.*";

if (ofdMegnyitas.ShowDialog() == DialogResult.OK)
{
string fajl = ofdMegnyitas.FileName;
string kiterjesztes = Path.GetExtension(fajl).ToLower();

if (kiterjesztes == ".rtf")
{
rtbDokumentum.LoadFile(fajl, RichTextBoxStreamType.RichText);
}
else if (kiterjesztes == ".txt")
{
rtbDokumentum.Text = File.ReadAllText(fajl);
}
else
{
MessageBox.Show("Ezt a fájltípust a MiniWord egyelőre nem tudja megnyitni: " + kiterjesztes);
}
}
}

Add hozzá a using sort!

A Path és a File osztály a System.IO névtérben él. Ha a Visual Studio aláhúzza őket, írd a fájl tetejére: using System.IO;

Miért nem LoadFile a TXT-hez is?

A LoadFile a TXT fájlt is be tudná tölteni, de az ékezetes betűk könnyen elromlanak, ha a fájl kódolása nem egyezik azzal, amit a vezérlő feltételez. A File.ReadAllText() a modern UTF-8 kódolású fájlokat helyesen olvassa. Nagyon régi, ANSI kódolású fájloknál még így is előfordulhat hibás ékezet.

📷 Képernyőkép helye

Mit tegyél ide: a MiniWord a teszt.rtf megnyitása után. A félkövérre formázott szó látszik a szövegdobozban, alul pedig a „Karakterek: …” felirat. Mellette érdemes mutatni a fájlválasztó ablakot is, a típuslista lenyitva.Javasolt fájlnév: winforms-2-2-rtf-megnyitva.webp · Alt szöveg: A MiniWord egy megnyitott formázott RTF dokumentummal és a fájlválasztó típuslistájával

Ha valami elromlik: try–catch

A fájl lehet sérült, vagy egy ügyes felhasználó átnevezhet egy .txt fájlt .rtf-re. Ilyenkor a LoadFile hibával áll meg, és a program összeomlik. Erre való a try–catch: a try blokkban megpróbáljuk a kockázatos részt, ha pedig hiba történik, a catch blokk fut le a program összeomlása helyett.

Form1.csC#
try
{
rtbDokumentum.LoadFile(fajl, RichTextBoxStreamType.RichText);
}
catch (Exception ex)
{
MessageBox.Show("Nem sikerült megnyitni a fájlt: " + ex.Message);
}
try { }Ide kerül az a kód, amely hibázhat.
catch (Exception ex)Ide jut a program hiba esetén. Az ex a hibát leíró objektum.
ex.MessageA hiba rövid, szöveges leírása. Ezt mutatjuk meg a felhasználónak.
Mikor fut a catch?Csak akkor, ha a try blokkban hiba keletkezett. Siker esetén kihagyja a program.

A kivételkezelésről később, a C# alapok 4.5 leckéjében részletesen is tanulunk. Most elég annyi, hogy fájlműveleteknél érdemes használni.

Tedd a teljes fájlmegnyitó if–else if–else szerkezetet a try blokkba, a catch pedig kerüljön mögé. A mini projektben ezt a végleges kódot látod.

Ezzel a program kitartóbb lett

Hiba esetén a felhasználó érthető üzenetet kap, és a program tovább fut.

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. A formázott RTF

Megnyitod a teszt.rtf fájlt. Látszik a félkövér szó, és mit számol a számláló?

Jóslat ellenőrzése

A félkövér formázás látszik, mert az RTF megőrzi. A számláló csak a látható szöveg hosszát mutatja (Text.Length), a formázási jelöléseket nem számolja. A fájl megnyitása is megváltoztatja a szöveget, ezért a TextChanged esemény lefut.

2. Az ékezetes szöveg

Megnyitod a szia.txt fájlt, amelyben az Árvíztűrő tükörfúrógép szöveg áll. Mit mutat a számláló?

Jóslat ellenőrzése

Karakterek: 22 (9 betű, szóköz, 12 betű). Ha 23-at látsz, a Jegyzettömb sortörést tett a fájl végére, ez is karakternek számít.

3. A Word dokumentum

A típuslistából kiválasztod a Word dokumentumot, majd megnyitod a teszt.docx fájlt. Mi történik?

Jóslat ellenőrzése

Felugrik az üzenet, hogy a .docx típust a MiniWord egyelőre nem tudja megnyitni. A szűrő csak a listát szabályozza, megnyitni a kód nyitja meg, és a RichTextBox a .docx formátumot nem ismeri. Egy .docx valójában egy tömörített mappa, amelyben XML fájlok vannak. Ennek feldolgozása külön téma.

4. Mégse

Megnyitod a fájlválasztót, majd a Mégse gombra kattintasz. Mi történik a szövegdobozzal?

Jóslat ellenőrzése

Semmi: a ShowDialog() eredménye Cancel, ezért az if blokk nem fut le.

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. Ismeretlen Path

string kiterjesztes = Path.GetExtension(fajl);
// The name 'Path' does not exist in the current context
Hiba és javítás

Fordítási hiba (CS0103). A Path a System.IO névtérben van. Add a fájl tetejéhez: using System.IO;

2. Rossz szűrő

ofdMegnyitas.Filter = "RTF dokumentum|*.rtf|Minden fájl";
Hiba és javítás

Futás közbeni hiba a ShowDialog() hívásakor: a szűrő érvénytelen. Az utolsó elemnek nincs párja, a mintája hiányzik. Javítás: "RTF dokumentum|*.rtf|Minden fájl|*.*".

3. A Mégse is hibát okoz

ofdMegnyitas.ShowDialog();
string fajl = ofdMegnyitas.FileName;
string kiterjesztes = Path.GetExtension(fajl).ToLower();
Hiba és javítás

A Mégse gomb után is tovább fut a kód, de nincs kiválasztott fájl, a FileName üres, és a program a nem támogatott fájltípus üzenetét mutatja. Javítás: ellenőrizd a ShowDialog() eredményét az if (... == DialogResult.OK) szerkezettel.

4. A DOCX összeomlasztja a programot

rtbDokumentum.LoadFile(ofdMegnyitas.FileName, RichTextBoxStreamType.RichText);
Hiba és javítás

Futás közbeni hiba, ha nem RTF fájlt választasz, például .docx-et: a fájl formátuma nem érvényes RTF. Két védelem is kell: a kiterjesztés vizsgálata (if–else if) és a try–catch, mert egy átnevezett vagy sérült fájl a kiterjesztés ellenére is hibás lehet.

5. Elromlott ékezetek

rtbDokumentum.LoadFile(fajl, RichTextBoxStreamType.PlainText);
Hiba és javítás

A szöveges fájl ékezetes betűi hibásan jelenhetnek meg, ha a kódolás nem egyezik. Használd inkább a rtbDokumentum.Text = File.ReadAllText(fajl); sort, és próbáld ki az Árvíztűrő tükörfúrógép szöveggel.

Mini projekt: a MiniWord megnyit

Bővítsd a MiniWordöt: a gomb nyissa meg a fájlválasztót, az RTF és TXT fájlok töltődjenek be, a többi fájltípusnál pedig érthető üzenet jelenjen meg. A karakterszámláló a megnyitás után is frissüljön. A Form1.cs fájlod ezzel egészül ki. Először próbáld meg önállóan megírni, és csak utána nyisd meg a megoldást.

Megoldás és ellenőrzés megnyitása
Form1.csC#
using System;
using System.IO;
using System.Windows.Forms;

namespace MiniWord
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void rtbDokumentum_TextChanged(object sender, EventArgs e)
{
lblKarakterszam.Text = $"Karakterek: {rtbDokumentum.Text.Length}";
}

private void btnMegnyitas_Click(object sender, EventArgs e)
{
Megnyitas();
}

private void Megnyitas()
{
ofdMegnyitas.Title = "Dokumentum megnyitása";
ofdMegnyitas.Filter = "RTF dokumentum (*.rtf)|*.rtf|Word dokumentum (*.docx)|*.docx|Szövegfájl (*.txt)|*.txt|Minden fájl (*.*)|*.*";

if (ofdMegnyitas.ShowDialog() == DialogResult.OK)
{
string fajl = ofdMegnyitas.FileName;
string kiterjesztes = Path.GetExtension(fajl).ToLower();

try
{
if (kiterjesztes == ".rtf")
{
rtbDokumentum.LoadFile(fajl, RichTextBoxStreamType.RichText);
}
else if (kiterjesztes == ".txt")
{
rtbDokumentum.Text = File.ReadAllText(fajl);
}
else
{
MessageBox.Show("Ezt a fájltípust a MiniWord egyelőre nem tudja megnyitni: " + kiterjesztes);
}
}
catch (Exception ex)
{
MessageBox.Show("Nem sikerült megnyitni a fájlt: " + ex.Message);
}
}
}
}
}
📷 Képernyőkép helye

Mit tegyél ide: a nem támogatott fájltípus üzenete. A MiniWord előtt egy MessageBox látszik „Ezt a fájltípust a MiniWord egyelőre nem tudja megnyitni: .docx” szöveggel.Javasolt fájlnév: winforms-2-2-docx-uzenet.webp · Alt szöveg: A MiniWord üzenete arról, hogy a docx fájltípust még nem tudja megnyitni

Ne csak futtasd: próbáld ki mindhárom tesztfájllal, a Mégse gombbal, és egy átnevezett fájllal is (például nevezd át a szia.txt fájlt szia.rtf névre, majd nyisd meg).

Önálló gyakorlófeladatok

Először készíts saját megoldást. A lenyitható rész csak ellenőrzéshez van.

1. Több szöveges típus

A MiniWord a .txt mellett a .md és .csv fájlokat is szövegként nyissa meg.

Egy lehetséges megoldás
else if (kiterjesztes == ".txt" || kiterjesztes == ".md" || kiterjesztes == ".csv")
{
rtbDokumentum.Text = File.ReadAllText(fajl);
}

2. A fájl neve az ablak címében

Sikeres megnyitás után az ablak címsora legyen például MiniWord – teszt.rtf.

Egy lehetséges megoldás
rtbDokumentum.LoadFile(fajl, RichTextBoxStreamType.RichText);
this.Text = "MiniWord – " + Path.GetFileName(fajl);

A Path.GetFileName() csak a fájl nevét adja vissza, a mappa nélkül. Ugyanezt tedd a TXT ágba is.

3. A Dokumentumok mappa

A fájlválasztó a Dokumentumok mappában nyíljon meg.

Egy lehetséges megoldás
ofdMegnyitas.InitialDirectory =
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

Az InitialDirectory azt a mappát adja meg, amelyet a fájlválasztó először megnyit.

Gyakorlótár: 6 további feladat

Három szinten gyakorolhatsz: alap, közepes és kihívás. A feladatokhoz egy rtbDokumentum RichTextBox, egy ofdMegnyitas OpenFileDialog és egy gomb kell. A fájl elejére tedd a using System.IO; sort, ha nincs ott. Csak a próbálkozás után nyisd le a megoldást.

Alap szint

1. RTF fájl megnyitása

A btnMegnyit gomb nyisson meg egy RTF fájlt a fájlválasztóval. A típusszűrő csak az RTF fájlokat mutassa.

Megoldás megnyitása

A Filter szövege párokból áll: megjelenő név|minta. A LoadFile betölti az RTF fájlt a formázással együtt.

Form1.csC#
private void btnMegnyit_Click(object sender, EventArgs e)
{
ofdMegnyitas.Filter = "RTF dokumentum (*.rtf)|*.rtf";

if (ofdMegnyitas.ShowDialog() == DialogResult.OK)
{
rtbDokumentum.LoadFile(ofdMegnyitas.FileName, RichTextBoxStreamType.RichText);
}
}

2. A Mégse gomb

Mi történik, ha a felhasználó a fájlválasztóban a Mégse gombot nyomja? Hogyan kezeled úgy, hogy a program a Mégse után sem csinál semmit?

Megoldás megnyitása

A ShowDialog() DialogResult.Cancel értéket ad vissza. Csak az OK esetén dolgozunk a fájllal, egyébként kilépünk a metódusból. Az 1. feladat kódja már így működik: az if feltétel hamis marad a Mégse esetén. Ugyanez a return-nel is megírható:

Form1.csC#
if (ofdMegnyitas.ShowDialog() != DialogResult.OK)
{
return;
}

// innen folytatódik a megnyitás

Közepes szint

3. TXT fájl megnyitása

Bővítsd a szűrőt a TXT fájlokkal is. A TXT fájl tartalmát ReadAllText töltse be (az RTF-hez használt LoadFile egyszerű szövegre nem ajánlott).

Megoldás megnyitása

A TXT fájl nem RTF formátumú, ezért a Text tulajdonságba olvassuk be a File.ReadAllText segítségével. A kiterjesztést a Path.GetExtension adja, a ToLower() pedig kisbetűssé alakítja, így a .TXT is felismerhető.

Form1.csC#
private void btnMegnyit_Click(object sender, EventArgs e)
{
ofdMegnyitas.Filter = "RTF dokumentum (*.rtf)|*.rtf|Szöveges fájl (*.txt)|*.txt";

if (ofdMegnyitas.ShowDialog() != DialogResult.OK)
{
return;
}

string fajl = ofdMegnyitas.FileName;

if (Path.GetExtension(fajl).ToLower() == ".txt")
{
rtbDokumentum.Text = File.ReadAllText(fajl);
}
else
{
rtbDokumentum.LoadFile(fajl, RichTextBoxStreamType.RichText);
}
}

4. Hibakezelés

Védd a megnyitást try–catch blokkal, és külön jelezd a sérült fájlt: egy RTF kiterjesztésű, de valójában más tartalmú fájl esetén is érthető üzenet jelenjen meg.

Megoldás megnyitása

Az ArgumentException jellemzően a hibás RTF tartalomból, az IOException a nem olvasható (például más program által zárolt) fájlból származik. A többit az általános Exception kapja el.

Form1.csC#
try
{
rtbDokumentum.LoadFile(fajl, RichTextBoxStreamType.RichText);
}
catch (ArgumentException)
{
MessageBox.Show("A fájl nem érvényes RTF dokumentum.");
}
catch (IOException ex)
{
MessageBox.Show("A fájl nem olvasható: " + ex.Message);
}
catch (Exception ex)
{
MessageBox.Show("Váratlan hiba: " + ex.Message);
}

Kihívás szint

5. A fájl neve a címsorban

Sikeres megnyitás után az ablak címsora mutassa: MiniWord – level.rtf.

Megoldás megnyitása

A Path.GetFileName a teljes útvonalból csak a fájl nevét adja vissza. A címsort (this.Text) csak sikeres betöltés után állítjuk.

Form1.csC#
rtbDokumentum.LoadFile(fajl, RichTextBoxStreamType.RichText);
this.Text = "MiniWord – " + Path.GetFileName(fajl);

6. Megnyitás kiterjesztés szerint

A szűrő tartalmazza az RTF, a TXT és a minden fájl lehetőséget. Az RTF és a TXT fájlt töltsd be, bármi mást jelezz hibaüzenettel (például A .docx fájlt a MiniWord nem tudja megnyitni.).

Megoldás megnyitása

A kiterjesztés alapján három ágat különítünk el. Az üzenetben a kiterjesztés is szerepel, így a felhasználó érti, miért nem nyílt meg a fájl.

Form1.csC#
private void btnMegnyit_Click(object sender, EventArgs e)
{
ofdMegnyitas.Filter = "RTF dokumentum (*.rtf)|*.rtf|Szöveges fájl (*.txt)|*.txt|Minden fájl (*.*)|*.*";

if (ofdMegnyitas.ShowDialog() != DialogResult.OK)
{
return;
}

string fajl = ofdMegnyitas.FileName;
string kiterjesztes = Path.GetExtension(fajl).ToLower();

try
{
if (kiterjesztes == ".rtf")
{
rtbDokumentum.LoadFile(fajl, RichTextBoxStreamType.RichText);
}
else if (kiterjesztes == ".txt")
{
rtbDokumentum.Text = File.ReadAllText(fajl);
}
else
{
MessageBox.Show($"A {kiterjesztes} fájlt a MiniWord nem tudja megnyitni.");
}
}
catch (Exception ex)
{
MessageBox.Show("Nem sikerült megnyitni a fájlt: " + ex.Message);
}
}

Gyors önellenőrzés

Válaszolj fejben, és csak utána nyisd le a választ.

1. Mit jelent a Filter szövegben a | jel?

Elválasztja a feliratot a mintától, és a párokat egymástól. Mindig páros számú elemnek kell lennie.

2. Mit ad vissza a ShowDialog()?

Egy DialogResult értéket: OK, ha a felhasználó a Megnyitás gombbal zárta be az ablakot, Cancel, ha a Mégse gombbal.

3. Miért nem elég a fájlszűrő a DOCX kezeléséhez?

A szűrő csak a fájlválasztó listáját szabályozza. Hogy a fájlt a program meg tudja nyitni, azt a betöltő kód dönti el.

4. Mi a különbség a LoadFile és a File.ReadAllText között?

A LoadFile RTF fájlt tölt be formázással együtt. A File.ReadAllText egy fájl tartalmát egyszerű szövegként olvassa be.

5. Mikor fut le a catch blokk?

Csak akkor, ha a try blokkban hiba keletkezett.

6. Miért tesszük a kódot külön Megnyitas() metódusba?

Hogy később több helyről, például a gombból és a menüből is meg lehessen hívni, ne kelljen kétszer megírni.

Mit tudsz már?

  • Elhelyezel és beállítasz egy OpenFileDialog komponenst.
  • Fájlszűrőt írsz RTF, DOCX, TXT és minden fájl típusra.
  • Kezeled az OK és a Mégse eredményt.
  • Megnyitod az RTF fájlt formázással, a TXT fájlt szövegként.
  • A kiterjesztés alapján döntöd el, hogyan nyisd meg a fájlt.
  • A try–catch szerkezettel védekezel a sérült fájlok ellen.

Következő lecke: mentés megadott néven

A MiniWord már meg tudja nyitni a dokumentumokat. A következő leckében megtanítjuk elmenteni is, a felhasználó által megadott néven, RTF formátumban.