listbox a spol   otázka

VB.NET, WinForms, I/O operace

Ahoj, mam tu problém

Začínám s visual basicem

Mam txt soubor a vnem mam napsano

Jiný Lukáš

HT1

Čermáček Pavel

HT2

Bla Bla

HT1

a v scriptu mam

Dim soubor As New IO.StreamReader("zaci.txt")

While Not soubor.EndOfStream

Dim jmeno As String = soubor.ReadLine()

Dim trida As String = soubor.ReadLine()

ListBox1.Items.Add(jmeno & trida)

End While

soubor.Close()

Jde mi o to, aby se v listboxu nacetl jenom Jmeno (čermák pavel) a tu tridu nekam prozatim schovalo.

A pokud bych v listboxu klikl na jmeno treba Čermák pavel, tak aby přečetl radek (tridu) pod tim jmenem

Čermáček PavelHT2

a napsalo by u třídu do label1.text

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Txt soubor si načtěte do paměti, přistupovat k němu za běhu stojí spoustu času.

Př:

Vytvořte si objekt:

public class Zak
    {

        public Zak(string fullName, string trida)
        {
            FullName = fullName;
            Trida = trida;
        }

        public string FullName { get; set; }
        public string Trida { get; set; }

        //String popis třídy -> bude zobrazen v listboxu
        public override string ToString()
        {
            return FullName;
        }
    }

nebo by pro takto jednoduchý příklad šla použít KeyValuePair<string, string> a listboxu nastavit DisplayMember na Key.

Do kolekce Items listboxu načtete tyto objekty:

var zaci = new List<Zak>();
                
                using (var reader = new StreamReader(fileName))
                {
                    string line;
                    var lineNumber = 0;         
                    var name = string.Empty;
                    while ((line = reader.ReadLine()) != null)
                    {

                        if ((lineNumber % 2) == 0)
                            //sudý řádek (jméno)
                            name = line;
                        else
                        {
                            //lichý řádek (třída)
                            var z = new Zak(name, line);
                            zaci.Add(z);
                        }

                        lineNumber++;
                    }
                }

                //načtení do listboxu
                var arZaci = zaci.ToArray().Clone();
                listBox1.Items.Clear();
                listBox1.Items.AddRange((object[]) arZaci);

Na událost listboxvaluechanged načtete odsah textboxu

private void OnListBoxSelectedValueChanged(object sender, EventArgs e)
        {
            var lst = sender as ListBox;
            var itm = lst.SelectedItem as Zak;
            textBox1.Text = itm.Trida;
        }

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Já nemám C++ ale normální visual basic

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To není C++, ale C# ;)

Já bych to řešil asi následovně. K tomu ListBoxu si paralelně vytvořte List (Teomáš Jecha tady o něm má nějaké články - http://vbnet.cz/blog-clanek--171-net_tip... ). Jméno hodíte do ListBoxu, třídu do Listu a budou Vám přesně odpovídat indexy jednotlivých žáků a jejich tříd.

Potom jen po kliknutí na nějakou položku z ListBoxu necháte vypsat v labelu odpovídající položku v Listu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Muzes napsat script?

abych to pochopil

Z toho odkazu jsem nic nezjistil

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Přeložte si kód do vb třeba zde:

http://www.developerfusion.com/tools/con...

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Píše to kraviny, zkuste to nekdo napsat, nebo aspon nejak vysvetlit, kdyz kliknu na jmeno v listboxu tak at v txt souboru najde to jmeno a precte radek (tridu) pod tim a da to do labelu

nahlásit spamnahlásit spam -3 / 3 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback