Supprimer un element dans la listeBox

Résolu/Fermé
danny243 Messages postés 74 Date d'inscription vendredi 19 mars 2021 Statut Membre Dernière intervention 16 octobre 2021 - 30 mars 2021 à 07:30
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 - 30 mars 2021 à 18:14
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

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
30 mars 2021 à 16:40
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 vendredi 19 mars 2021 Statut Membre Dernière intervention 16 octobre 2021
30 mars 2021 à 16:47
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
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931 > danny243 Messages postés 74 Date d'inscription vendredi 19 mars 2021 Statut Membre Dernière intervention 16 octobre 2021
30 mars 2021 à 17:25
oui ou alors

if (lsbCategorieD.SelectedItem ==null)
                                          return;
0
danny243 Messages postés 74 Date d'inscription vendredi 19 mars 2021 Statut Membre Dernière intervention 16 octobre 2021 > Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024
30 mars 2021 à 17:26
okay ça marche merci en tout cas
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931 > danny243 Messages postés 74 Date d'inscription vendredi 19 mars 2021 Statut Membre Dernière intervention 16 octobre 2021
30 mars 2021 à 18:14
de rien
0
danny243 Messages postés 74 Date d'inscription vendredi 19 mars 2021 Statut Membre Dernière intervention 16 octobre 2021
30 mars 2021 à 16:43
dans la méthode où il y'a mon erreur?
0