IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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í.

Diskuze: WinForms - DataSource do Listu?

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Daniel Gabzdyl:16.12.2016 22:19

Ahoj, mám takový problém.
Použil jsem DataSource k importu souboru do listoboxu, ale itemy v listboxu nejdou upravit, když je to DataSource.

Nemáte nějaký nápad, jak by to šlo vyřešit?

Děkuji.
Načtení DataSource

string path = "";
            OpenFileDialog fdlg = new OpenFileDialog();
            fdlg.Title = "Vyber titulky";
            fdlg.InitialDirectory = @"c:\";
            fdlg.Filter = "All files (*.*)|*.*|All files (*.*)|*.*";
            fdlg.FilterIndex = 2;
            fdlg.RestoreDirectory = true;
            if (fdlg.ShowDialog() == DialogResult.OK)
            {
                path = fdlg.FileName;
            }
            try
            {
                listBox1.DataSource = File.ReadAllLines(path);

            }
            catch
            {
                MessageBox.Show("Neplatný soubor, nebo neplatný formát!", "Neplatný soubor");
            }
 
Odpovědět
16.12.2016 22:19
Avatar
Daniel Gabzdyl:16.12.2016 22:21

Upravit to chci prozatím takto:

for(int i = 1;i<listBox1.Items.Count;i++)
            {   listBox1.Items.RemoveAt(i);
                listBox1.Items.Insert(i, "test");
            }
 
Nahoru Odpovědět
16.12.2016 22:21
Avatar
Honza
Člen
Avatar
Honza:16.12.2016 22:50

Zkus jednotlivé položky upravovat přímo v datasource.
Pokud chceš jednotlivé položky měnit tak jak uvádíš, nepoužívej datasource, ale naplň si listbox daty ručně.

Nahoru Odpovědět
16.12.2016 22:50
Snadnou cestou se daleko nedostanete, je tam velká tlačenice...
Avatar
Odpovídá na Honza
Daniel Gabzdyl:16.12.2016 22:54

Já právě potřebuji, abych pokaždé mohl načíst jiný soubor, ale vykonat stejný proces.

 
Nahoru Odpovědět
16.12.2016 22:54
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Daniel Gabzdyl
David Hartinger:16.12.2016 23:51

Když se podíváš, co ti vrací metoda ReadAllLines(), zjistíš, že je to pole stringů. A v poli opravdu nemůžeš mazat indexy :) Zkus tam dát BindingList:

listBox1.DataSource = new BindingList<string>(File.ReadAllLines(path));

P.S. případně ObservableCollec­tion, pokud to děláš ve WPFku.

Editováno 17.12.2016 0:00
Nahoru Odpovědět
16.12.2016 23:51
New kid back on the block with a R.I.P
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 5 zpráv z 5.