2017-07-21 3 views
0

Je souhaite créer plusieurs zones de liste qui n'apparaissent qu'après avoir cliqué sur un élément dans la zone de liste précédente. Donc, quand je sélectionne un élément dans listbox1 il affiche les éléments pour listbox2 et quand je clique sur un élément dans listbox2 il affiche tous les éléments pour la liste trois etc. Je suis capable de cliquer sur un élément dans listbox1 pour l'obtenir listbox2 mais après cela, j'obtiens l'erreur suivante: La référence d'objet n'est pas définie sur une instance d'un objet. Comment puis-je définir plusieurs zones de liste à afficher après avoir cliqué sur un élément dans la zone de liste précédente sans obtenir l'erreur?Comment faire pour cliquer sur la liste qui n'est pas actuellement sélectionnée?

private void Form1_Load(object sender, EventArgs e) 
    { 
     listBox1.Items.Add(1); 
     listBox1.Items.Add(2); 
     listBox1.Items.Add(3); 
    } 

    private void Form1_MouseClick(object sender, MouseEventArgs e) 
    { 
     string curItem1 = listBox1.SelectedItem.ToString(); 

     if (curItem1 == "1") 
     { 
      listBox2.Items.Add(1); 

      if(curItem1 == "1") 
      {     
       listBox3.Items.Add(1); 
      } 
      string curItem2 = listBox2.SelectedItem.ToString(); 
      ///This is where I get the error! 
     } 
    } 

Répondre

-1

Vous avez fait allusion à listBox2.SelectedItem avant qu'il ne soit affecté et c'est la raison pour laquelle vous avez reçu l'exception, pour résoudre le problème simple, assigner la SelectedItem propriété de ListBox2:

string curItem1 = listBox1.SelectedItem.ToString(); 

if (curItem1 == "1") 
{ 
    listBox2.Items.Add(1); 
    listBox2.SelectedItem = 1; 
} 
0

Vous avez besoin pour sélectionner l'article après l'avoir ajouté:

private void Form1_MouseClick(object sender, MouseEventArgs e) 
    { 
     string curItem1 = listBox1.SelectedItem.ToString(); 

     if (curItem1 == "1") 
     { 
      listBox2.Items.Add(1); 
      listBox2.SelectedIndex = 0; //<= This selects the item 

      if (curItem1 == "1") 
      { 
       listBox3.Items.Add(1); 
      } 
      string curItem2 = listBox2.SelectedItem.ToString(); 
      ///This is where I get the error! 
     } 
    } 

Je voudrais aussi mettre quelques vérifications ici, par exemple. la première ligne pourrait être:

if (listBox1.SelectedItems.Count == 0) return;