Supprimer un element dans la listeBox

Résolu
danny243 Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Bonjour, j'ai une question je n'arrive pas à supprimer un élement de ma liste box voici mon code quand je clique sur le bouton supprimer le programme plante
ça dit comme erreur :System.NullReferenceException : 'La référence d'objet n'est pas définie à une instance d'un objet.' l'erreur se trouve dans la méthode private void LsbCategorieD_SelectionChanged(object sender, SelectionChangedEventArgs e)

pouvez vous m'aider merci




using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Collections.ObjectModel;
using System.Windows.Shapes;

namespace TP2_JeuxSociete
{
    /// <summary>
    /// Logique d'interaction pour CategorieJeu.xaml
    /// </summary>
    public partial class FCategorieJeu : Window
    {
        public static ObservableCollection<CategorieJeu> cat = new ObservableCollection<CategorieJeu>();
        CategorieJeu j = new CategorieJeu();
        public ObservableCollection<JeuSociete> listeJeu = new ObservableCollection<JeuSociete>();
  

        public FCategorieJeu(MainWindow mainWindow)
        {
            InitializeComponent();
            cat = CategorieJeu.ChargerFichier();
            lsbCategorieD.ItemsSource = cat;
            listeJeu= (ObservableCollection<JeuSociete>)mainWindow.dgListeJeux.ItemsSource;
           
         
          /*  label1.Content = question;
            txbCat.Text = ReponseParDefaut;

            Title = titre;*/
            



        }

        private void BtnAjouterNouvelleCategorie_Click(object sender, RoutedEventArgs e)
        {
            cat.Add(new CategorieJeu()
            {

                Nom = txbCat.Text

            }) ;
        }

        private void LsbCategorieD_Selected(object sender, RoutedEventArgs e)
        {
            
            



        }

        private void Window_ContentRendered(object sender, EventArgs e)
        {
            txbCat.SelectAll();
            txbCat.Focus();
        }
        public string Reponse { get { return txbCat.Text; } }

        private void LsbCategorieD_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            int compteur = 0;
            //  lbl_Numero.Content=;


            foreach (var jeu in listeJeu)
            {

                foreach (var categorie in jeu.LstCategorie)
                {
                    if (categorie.Nom == (lsbCategorieD.SelectedItem as CategorieJeu).Nom)
                    {
                        compteur++;

                    }
                }

            }
            lbl_Numero.Content = compteur;

            foreach (CategorieJeu item in lsbCategorieD.SelectedItems)
            {
                label1.Content = item.Nom;
            }
            
           
            //  lbl_Numero.Content=;
        }

        private void BtnModif_Click(object sender, RoutedEventArgs e)
        {
            if (CategorieJeu.EstValide(txbModif.Text))
            {
                MessageBox.Show("Erreur la catégorie existe");
            }
            else
            {
                (lsbCategorieD.SelectedItem as CategorieJeu).Nom = txbModif.Text;
              

            }
            
        }

        private void BtnSupprimer_Click(object sender, RoutedEventArgs e)
        {
            if (lsbCategorieD.SelectedItem != null)
            {
                cat.Remove(lsbCategorieD.SelectedItem as CategorieJeu);
            }
        }
    }
}

A voir également:

2 réponses

Utilisateur anonyme
 
Quand tu supprimes un item, ça désélectionne l’item en cours.
Du coup lsbCategorieD.SelectedItem est null.

Au début de ta méthode, teste si cette valeur est null est si oui sors de la méthode.
0
danny243 Messages postés 74 Date d'inscription   Statut Membre Dernière intervention  
 
un truc du genre ?


if (lsbCategorieD.SelectedItem !=null)
{
foreach (var jeu in listeJeu)
            {

                foreach (var categorie in jeu.LstCategorie)
                {
                    if (categorie.Nom == (lsbCategorieD.SelectedItem as CategorieJeu).Nom)
                    {
                        compteur++;

                    }
                }

            }
}



0
Utilisateur anonyme > danny243 Messages postés 74 Date d'inscription   Statut Membre Dernière intervention  
 
oui ou alors

if (lsbCategorieD.SelectedItem ==null)
                                          return;
0
danny243 Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   > Utilisateur anonyme
 
okay ça marche merci en tout cas
0
Utilisateur anonyme > danny243 Messages postés 74 Date d'inscription   Statut Membre Dernière intervention  
 
de rien
0
danny243 Messages postés 74 Date d'inscription   Statut Membre Dernière intervention  
 
dans la méthode où il y'a mon erreur?
0