J'ai une liste de liste avec un tas d'articles. L'utilisateur peut cliquer sur un élément pour éditer son contenu. Comment puis-je empêcher l'utilisateur de désélectionner tous les articles? I.E., l'utilisateur ne devrait pas être en mesure de ne rien avoir sélectionné. P>
5 Réponses :
Je ne suis pas sûr que s'il y a une manière directe de désactiver la désélectionner un article, mais une manière qui serait transparente pour l'utilisateur consiste à garder une trace du dernier élément sélectionné, et chaque fois que le Selectionchanged "/a> événement est soulevé et l'index sélectionné est -1, puis résélez la dernière valeur. P>
Weird ... Je ne vois qu'un événement code> Selectchanged code>. C'est définitivement une liste code> code> si ... à l'aide de WPF et .NET 4 ...
@Mark: Correct, les postes de liaison AMCCormack sont pour WinForms (espace de noms Windows.Forms). Le gist de la réponse s'applique encore, cependant.
Pour désactiver ou plus d'options dans votre liste de liste / Dropdown, vous pouvez ajouter l'attribut "désactivé" comme indiqué ci-dessous. Cela empêche l'utilisateur de sélectionner cette option et obtient une superposition grise.
ListItem item = new ListItem(yourvalue, yourkey);
item.Attributes.Add("disabled","disabled");
lb1.Items.Add(item);
Je pense que c'est le contraire de ce que je voulais quand j'ai posé cette question. Je voulais empêcher les utilisateurs de Désélectionner i> une option, sans le sélectionner. Sauf si vous voulez dire que je pourrais désactiver le dernier élément de la liste quand ils sont jusqu'à 1 .... Je ne sais pas si cela me donnerait le comportement souhaité ou non.
Il y a une affaire manquante dans votre situation, qui est I Mettez ce Intérieur un comportement . p> p>
Comment attachez-vous ce comportement à la liste de la liste dans XAML?
une solution, comme suggéré par amccormack code>:
Cela fonctionne avec certitude d'empêcher l'utilisateur de désélectionner ... Ajoutez ces 2 événements à votre CheckedListbox1 et définissez la propriété private void checkedListBox1_SelectedValueChanged(object sender, EventArgs e)
{
checkedListBox1.SetItemChecked(checkedListBox1.SelectedIndex, true);
}
private void checkedListBox1_MouseDoubleClick(object sender, MouseEventArgs e)
{
checkedListBox1.SetItemChecked(checkedListBox1.SelectedIndex, true);
}
Dupliqué possible de ListBox WPF: N'autorez pas la désélectionner / désélectionner