Pouze tento týden sleva až 80 % na e-learning týkající se Pythonu. Zároveň využij akce až 80 % zdarma při nákupu kreditů. 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
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 Čápka
Tým ITnetwork
Avatar
Odpovídá na Daniel Gabzdyl
David Čápka: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
One of the most common causes of failure is the habit of quitting when one is overtaken by temporary defeat.
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.