2015-08-06 9 views
0

Ainsi, le code suivant présente une erreur évidente: lorsque l'utilisateur change la sélection entre les deux listes, celles-ci sont effacées. Quelle est la meilleure façon de sélectionner un article dans listbox2 tout en désélectionnant simultanément l'article dans listbox1, vice versa.Changement de sélection C# entre 2 listes de sélection

private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e) 
    { 
    listbox2.ClearSelected() 
    } 

    private void listBox2_SelectedIndexChanged(object sender, System.EventArgs e) 
    { 
    listbox1.ClearSelected() 
    } 

J'aimerais demander simplement demander à un ami, mais je ne peux pas sembler figurer ce simple sur ...

Pour clarifier le code fonctionne lorsque je sélectionne un élément de listbox1, listbox2 n'est alors pas sélectionné. Le problème est que ListBox2 est immédiatement changé désélectionnant l'élément de listbox1 qui vient d'être cliquée

+0

* Non sélectionné * signifie * index sélectionné = '-1' *. Pourquoi voulez-vous effacer la sélection en premier lieu (nous donner un scénario réel, peut-être que votre approche est erronée par elle-même)? Vous pouvez utiliser des événements focus pour empêcher le traitement des événements 'SelectedIndexChanged' pour * active *' ListBox'. – Sinatr

+0

Le code devrait fonctionner, sauf si vous ne nous avez pas montré d'autres événements modifiant la sélection ou le focus. – Graffito

Répondre

0

Modifier les fonctions comme suit:

private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e) 
{ 
    if (bChanging) return; 
    bChanging = true; 
    listbox2.ClearSelected(); 
    bChanging = false; 
} 

bChanging est membre de la forme.
Cette construction ou une construction similaire devrait fonctionner.

+0

Merci, cela a fonctionné parfaitement. Je savais que ce serait simple – ben9020