Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
meteos
Člen
Avatar
meteos:25.12.2011 17:40

Dobrý den,
řeším strašně pro mně neřešitelný problém. Je to ukládání ListBoxu nebo ListView a opětovné načítání. Na internetu (konkrétně na http://www.vbnet.cz/…ormular.aspx) jsem našel následující kód:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
       If ListView1.SelectedItems.Count = 0 Then Exit Sub 'pokud není vybrána žádná položka, nic neupravovat

       With ListView1.SelectedItems(0)
           Dim dlg As New Dialog1()                                'vytvořit objekt nového okna

           'nastavit do okna hodnoty ze seznamu
           dlg.DateTimePicker1.Value = CDate(.SubItems(0).Text)      'nastavit datum
           dlg.NumericUpDown1.Value = CDbl(.SubItems(1).Text)        'nastavit částku
           dlg.TextBox1.Text = .SubItems(2).Text                     'nastavit popis

           If dlg.ShowDialog() = DialogResult.OK Then              'zobrazit okno a počkat na zavření, pokud je OK, tak ...

               'zjistit hodnoty z okna
               Dim datum As DateTime = dlg.DateTimePicker1.Value   'zjistit datum
               Dim castka As Double = dlg.NumericUpDown1.Value     'zjistit částku
               Dim text As String = dlg.TextBox1.Text              'zjistit popis

               'pokud je částka menší než nula, obarvit položku červeně, jinak ji obarvit černě
               If castka < 0 Then .ForeColor = Color.Red Else .ForeColor = Color.Black
               .SubItems(0).Text = datum.ToShortDateString()            'vypsat datum
               .SubItems(1).Text = castka                               'přidat druhý sloupeček s částkou
               .SubItems(2).Text = text                                 'přidat třetí sloupeček s popisem
           End If
       End With
   End Sub

Chtěl bych podobnou funkci zařídit v C Sharp. Nevíte jak toto napsat v C Sharp a podělíte se o svoje vědomosti? :D:D

 
Odpovědět
25.12.2011 17:40
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na meteos
David Hartinger:25.12.2011 17:51

Tohle moc nevypadá jako kód co něco ukládá. Cože to vůbec chcete dělat?

Nahoru Odpovědět
25.12.2011 17:51
New kid back on the block with a R.I.P
Avatar
meteos
Člen
Avatar
Odpovídá na David Hartinger
meteos:25.12.2011 18:03

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

 
Nahoru Odpovědět
25.12.2011 18:03
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na meteos
David Hartinger:25.12.2011 18:12

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);
  }
}
Nahoru Odpovědět
25.12.2011 18:12
New kid back on the block with a R.I.P
Avatar
meteos
Člen
Avatar
Odpovídá na David Hartinger
meteos:25.12.2011 19:06

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();
}



                }
 
Nahoru Odpovědět
25.12.2011 19:06
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na meteos
David Hartinger:25.12.2011 19:25

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 ;)

Nahoru Odpovědět
25.12.2011 19:25
New kid back on the block with a R.I.P
Avatar
meteos
Člen
Avatar
meteos:25.12.2011 19:42

Dobře, ale kam uložím údaje z editu?

 
Nahoru Odpovědět
25.12.2011 19:42
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na meteos
David Hartinger:25.12.2011 19:46

Asi vám nerozumím, psal jste, že údaje z editu ukládáte do listboxu.

Nahoru Odpovědět
25.12.2011 19:46
New kid back on the block with a R.I.P
Avatar
meteos
Člen
Avatar
Odpovídá na David Hartinger
meteos:25.12.2011 20:00

Ano a ten listbox pak celý do souboru. Potom opět vytáhne ze souboru a načte do listboxu.

 
Nahoru Odpovědět
25.12.2011 20:00
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na meteos
David Hartinger:25.12.2011 20:13

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);
  }
}
Nahoru Odpovědět
25.12.2011 20:13
New kid back on the block with a R.I.P
Avatar
meteos
Člen
Avatar
Odpovídá na meteos
meteos:25.12.2011 20:56

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?

 
Nahoru Odpovědět
25.12.2011 20:56
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na meteos
David Hartinger:25.12.2011 21:02

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á.ToStrin­g(). Musíte trochu zkoušet a pochopit, jak co funguje.

Nahoru Odpovědět
25.12.2011 21:02
New kid back on the block with a R.I.P
Avatar
meteos
Člen
Avatar
meteos:25.12.2011 21:10

Děkuji moc. Jdu zkoušet :D:D

 
Nahoru Odpovědět
25.12.2011 21:10
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 13 zpráv z 13.