Diskuze: Ukládání list boxu
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 13 zpráv z 13.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Tohle moc nevypadá jako kód co něco ukládá. Cože to vůbec chcete dělat?
Chci udělat to, aby údaje zadané uživatelem do nějakého editu, byly vloženy do ListView nebo ListBoxu a obsah těchto komponent bude uložen například do txt. Po návratu k programu se po stisku tlačítka opět "natáhnou" data do ListView a uživatel je bude moct znovu editovat a přidávat zápisy. Potom svoji práci opět uloží. Pro lepší pochopení posílám jeden projekt v Delphi, jak by to mělo vypadat. http://www.dwn.cz/…-meteorology
Tady záleží na tom, co máte v tom ListBoxu uloženého. Pokud tam máte jen nějaké stringy, lze to jednoduše poukládat do textového souboru. Se soubory se rpacuje pomocí objektu StreamWriter, přidejte si na začátek using System.IO.
// uložení:
using (StreamWriter writer = new StreamWriter(new FileStream("soubor.txt", FileMode.Create)))
{
foreach(string s in listBox1.Items)
{
writer.WriteLine(s);
}
writer.Flush();
}
// načtení:
listBox1.Clear();
using (StreamReader reader = new StreamReader("soubor.txt"))
{
string s;
while ((s = reader.ReadLine()) != null)
{
listBox1.Items.Add(s);
}
}
Mám to vložit jako obsluhu tlačítka?
void Button1Click(object sender, EventArgs e)
{
listBox1.Items.Add(DateTime.Now+"neco");
using (StreamWriter writer = new StreamWriter(new FileStream("soubor.txt", FileMode.Create)))
{
foreach(string s in listBox1.Items)
{
writer.WriteLine(s);
}
writer.Flush();
}
}
Kód si logicky vložte tam, kde se má provést. Pokud se má provést při
stisknutí tlačítka, pak právě tam
Asi vám nerozumím, psal jste, že údaje z editu ukládáte do listboxu.
Ano a ten listbox pak celý do souboru. Potom opět vytáhne ze souboru a načte do listboxu.
Koukám, že v tom plavete, tak vám to vysvětlím celé
Předpokládám, že TextBox (kterému říkáte edit) máte pojmenovaný textBox1 a listbox listBox1. Vložte si na formulář 3 tlačítka: Přidat, Uložit a Načíst. Do nich popořadě vložíte následující kód:
Přidat:
listBox1.Items.Add(Edit1.Text);
Uložit:
using (StreamWriter writer = new StreamWriter(new FileStream("soubor.txt", FileMode.Create)))
{
foreach(string s in listBox1.Items)
{
writer.WriteLine(s);
}
writer.Flush();
}
Načíst:
listBox1.Clear();
using (StreamReader reader = new StreamReader("soubor.txt"))
{
string s;
while ((s = reader.ReadLine()) != null)
{
listBox1.Items.Add(s);
}
}
Děkuji moc. Vše už funguje, ale co když chci ukládat a opět načítat proměnné a dále s nimi pracovat?
No to uděláte úplně stejně, uložíte je do souboru a potom načtete. Jen vynecháte cyklus foreach a do metody WriteLine vložíte proměnná.ToString(). Musíte trochu zkoušet a pochopit, jak co funguje.
Zobrazeno 13 zpráv z 13.