Supprimer un element dans la listeBox [Résolu]

Signaler
Messages postés
49
Date d'inscription
vendredi 19 mars 2021
Statut
Membre
Dernière intervention
31 mars 2021
-
Messages postés
15780
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 avril 2021
-
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);
            }
        }
    }
}

2 réponses

Messages postés
15780
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 avril 2021
684
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.
Messages postés
49
Date d'inscription
vendredi 19 mars 2021
Statut
Membre
Dernière intervention
31 mars 2021

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++;

                    }
                }

            }
}



Messages postés
15780
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 avril 2021
684 >
Messages postés
49
Date d'inscription
vendredi 19 mars 2021
Statut
Membre
Dernière intervention
31 mars 2021

oui ou alors

if (lsbCategorieD.SelectedItem ==null)
                                          return;
Messages postés
49
Date d'inscription
vendredi 19 mars 2021
Statut
Membre
Dernière intervention
31 mars 2021
>
Messages postés
15780
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 avril 2021

okay ça marche merci en tout cas
Messages postés
15780
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 avril 2021
684 >
Messages postés
49
Date d'inscription
vendredi 19 mars 2021
Statut
Membre
Dernière intervention
31 mars 2021

de rien
Messages postés
49
Date d'inscription
vendredi 19 mars 2021
Statut
Membre
Dernière intervention
31 mars 2021

dans la méthode où il y'a mon erreur?