2010-10-22 4 views
1

comment puis-je sélectionner cinq éléments dans le seul clic sur la liste? si je clique sur un élément, je veux juste +2 et -2 de l'index sélectionné. mon simple clic doit donc sélectionner cinq éléments dans la liste. Utilisez C# (WPF).mulit select listbox dans wpf

+0

quel code avez-vous essayé jusqu'à présent? –

+0

J'essaye juste de boucler une fonction dans le clic de souris comme ceci .. int selitem = listBox1.SelectedIndex; int i = selitem; pour (i = 0; i <= (selitem + 5); i ++) { listBox1.SelectedIndex = i; } Mais cela ne fonctionne pas, il sélectionne le dernier élément seulement, je mets à SelectionMode à plusieurs, mais même je ne peux pas le faire fonctionner –

Répondre

1

Je ne suis pas sûr de ce que vous voulez faire exactement, mais en essayant. =)

Jetez un oeil à l'événement Click de la ListBox. Vous pouvez faire n'importe quoi, y compris choisir cinq articles de votre choix. Vous pouvez le faire comme ça (non testé, mais vous donne une idée):

int sindex = listBox1.SelectedIndex; 
listBox1.SelectedItems.Clear(); 
for(int i = Math.Max(sindex - 2, 0); i < Math.Min(sindex + 2, listBox1.Items.Count()), i++) 
{ 
    listBox1.SelectedItems.Add(listBox1.Items[i]); 
} 

Une autre chose allait mettre le SelectionMode à multiples ou étendues. Cela entraîne-t-il le comportement que vous recherchez?

+0

je vérifie avec le multiple et étendre, il me permet de sélectionner plusieurs éléments, mais son pas comme je l'ai dit, si je clique sur des éléments, je veux juste +2 et -2 de l'index sélectionné. donc mon seul clic doit sélectionner cinq éléments dans la liste .. je pense que vous pouvez me comprendre maintenant ?? tu as une idée ??? –

+0

@deep: Voir mes réponses modifiées. – Jens

0

un coup d'oeil à l'événement selectionChanged, et l'index de l'élément et de le rendre +2 et -2 je l'ai essayé comme ça et il fonctionne sélectionné:

void list_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    int idx = list.SelectedIndex; 
    int startIdx = idx - 2; 
    int endIdx = idx + 2; 
    if (startIdx < 0) 
    { 
     startIdx = 0; 
    } 
    if (endIdx >= list.Items.Count) 
    { 
     endIdx = list.Items.Count-1; 
    } 

    for (int i = startIdx; i <= endIdx; i++) 
    { 
     if (i != idx) 
     { 
      list.SelectedItems.Add(list.Items[i]); 
     } 
    } 
} 

un problème avec ce code est vous pouvez toujours utiliser ctrl pour sélectionner un autre élément afin qu'il augmente le nombre d'éléments sélectionnés