Błędy podczas czyszczenia listboxa

0

Witam.
Jako, że jest to mój pierwszy post na forum - witam serdecznie. Jestem początkującym programistą w C#.
Piszę playlistę do odtwarzacza, która działa prawidłowo, do momentu próby jej wyczyszczenia.
Kod prezentuje się jak poniżej:

       private void playlistSelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            foreach (char file in listBox.SelectedItem.ToString())
            {
                videoClip.Source = new Uri(listBox.SelectedItem.ToString());  
            }              
            
            //MessageBox.Show(listBox.SelectedItem.ToString());
        }

        private void clearPlaylist(object sender, RoutedEventArgs e)
        {
           listBox.Items.Clear();
        }

Podczas próby wyczyszczenia playlisty wyskakuje mi błąd "System.NullReferenceException: „Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu.”

System.Windows.Controls.Primitives.Selector.SelectedItem.get zwrócił null." z którym nie bardzo mam pojęcie jak sobie poradzić.

0
nUmer napisał(a):

Witam.
Jako, że jest to mój pierwszy post na forum - witam serdecznie. Jestem początkującym programistą w C#.
Piszę playlistę do odtwarzacza, która działa prawidłowo, do momentu próby jej wyczyszczenia.
Kod prezentuje się jak poniżej:

       private void playlistSelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            foreach (char file in listBox.SelectedItem.ToString())
            {
                videoClip.Source = new Uri(listBox.SelectedItem.ToString());  
            }              
            
            //MessageBox.Show(listBox.SelectedItem.ToString());
        }

        private void clearPlaylist(object sender, RoutedEventArgs e)
        {
           listBox.Items.Clear();
        }

Podczas próby wyczyszczenia playlisty wyskakuje mi błąd "System.NullReferenceException: „Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu.”

System.Windows.Controls.Primitives.Selector.SelectedItem.get zwrócił null." z którym nie bardzo mam pojęcie jak sobie poradzić.

Daj sprawdzenie czy masz zaznaczony element na liście

if( listBox.SelectedItem != null)
{
             foreach (char file in listBox.SelectedItem.ToString())
             {
             videoClip.Source = new Uri(listBox.SelectedItem.ToString());  
             }            
}

powinno pomóc

0

przecież ten kod

foreach (char file in listBox.SelectedItem.ToString())
            {
                videoClip.Source = new Uri(listBox.SelectedItem.ToString());  
            }   

jest całkowicie bez sensu

0

Działa zadowalająco :)
Dzięki

0

no to pochwal się co robi bo jestem pewny, że to co myślisz, że robi a to co robi na prawdę to dwie różne rzeczy

0

Pętla iterująca po zaznaczonych uprzednio plikach do odtwarzania, które przyjmuje jako ścieżki.

0

Iterujesz po znakach, a nie plikach, mało tego, do niczego tego nie wykorzystujesz. Ale spoko jeśli dla Ciebie działa :D

0

to Ci się trochę pomyliło - zamiast SelectedItem miało być https://msdn.microsoft.com/pl-pl/library/system.windows.forms.listbox.selecteditems(v=vs.110).aspx i jak napisał @kzkzg i tak nigdzie nie wykorzystujesz poszczególnych elementów po których iterujesz

0

OK, iteruję po nazwach plików ( listBox.SelectedItem.ToString() ) wraz ze ścieżkami które wykorzystuję z listy jako źródło do odtwarzania.
https://msdn.microsoft.com/pl-pl/library/system.windows.forms.listbox.selecteditem(v=vs.110).aspx

Sprawdziłem MessageBox.Show(listBox.SelectedItem.ToString()); i pokazywane są zaznaczone pliki z listy którą wcześniej dodaję za pomocą innego kodu.

0

NIE ITERUJESZ PO NAZWACH PLIKÓW!!! Iterujesz po znakach w AKTUALNIE ZAZNACZONEJ JEDNEJ (jeśli zaznaczone jest kilka to dostaniesz losową z zaznaczonych) NAZWIE PLIKU

0

Faktycznie - po wyrzuceniu pętli for działa prawidłowo (bo nie wykorzystałem zmiennej file(Pozostałości po grzebaniu)), jednak z kodem Krwawego Szczura.
Mimo wszystko sprawdziłem przez:

 foreach (char file in listBox.SelectedItem.ToString())
                {
                    string dupa = Convert.ToString(file);
                    MessageBox.Show(dupa);
                }

i wyrzuca mi od początku do końca znaki ze ścieżki z plikiem zaznaczonym w listboxie.

Iteruję po znakach zaznaczonego pliku - teraz ok? :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1