[C#] C # ListBox Élément sélectionné Null Exception



Answers

Vous pouvez vérifier SelectedIndex avant cette ligne:

if(listBox2.SelectedIndex < 0)
    return;
Question

L'utilisateur peut cliquer sur un élément dans un ListBox comme suit:

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    textBox2.Clear();
    listBox2.Items.Clear();

    string[] p = 
         Directory.GetFiles(
             textBoxDir.Text, 
             listBox1.SelectedItem.ToString(),
             SearchOption.AllDirectories);

    foreach (string open in p) 
        ......
}

Tout est bon. Toutefois, si l'utilisateur clique sur un espace vide dans le contrôle ListBox, il affiche l'erreur suivante:

System.NullReferenceException

C'est à cause de cette ligne de code:

string[] p = 
    Directory.GetFiles(
        textBoxDir.Text, 
        listBox1.SelectedItem.ToString(),   
        SearchOption.AllDirectories);

Est-ce que quelqu'un a un travail intelligent? Ou suggérer une alternative à mon code?




Que diriez-vous

if (listBox1.SelectedItem != null)
{
    string[] p = Directory.GetFiles(textBoxDir.Text, listBox1.SelectedItem.ToString(),   SearchOption.AllDirectories);
}

Code complet

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (listBox1.SelectedItem != null)
    {    
        textBox2.Clear();
        listBox2.Items.Clear();

        string[] p = Directory.GetFiles(textBoxDir.Text, listBox1.SelectedItem.ToString(), SearchOption.AllDirectories);

        foreach (string open in p) 
         ...... }
    }
}



Cependant, aucun d'entre eux ne vous permet de revenir en arrière et de re-sélectionner dans la zone de liste. Toujours travailler sur cette question - mettra à jour.

while (user == null) {
    try {
        user = this.lstAdministratorName.SelectedItem.ToString();
    } catch { 
        lstAdministratorName.ClearSelected(); 
        return; 
    }
}





Links