Предотвратить отмену выбора пользователем элемента в ListBox? - PullRequest
8 голосов
/ 01 мая 2011

У меня есть ListBox с кучей предметов в нем.Пользователь может щелкнуть элемент, чтобы изменить его содержимое.Как запретить пользователю отменять выбор всех элементов?т. е. пользователь не должен иметь ничего выбранного.

Ответы [ 5 ]

4 голосов
/ 26 марта 2014

В вашей ситуации отсутствует случай, который равен , когда список очищен, вы повторно выберете элемент, которого больше нет в списке .Я решаю это, добавив дополнительную проверку.

        var listbox = ((ListBox)sender);
        if (listbox.SelectedItem == null)
        {
            if (e.RemovedItems.Count > 0)
            {
                object itemToReselect = e.RemovedItems[0];
                if (listbox.Items.Contains(itemToReselect))
                {
                    listbox.SelectedItem = itemToReselect;
                }
            }
        }

Затем я помещаю это в поведение .

2 голосов
/ 01 мая 2011

Я не уверен, есть ли прямой способ отключить отмена выбора элемента, но один из способов, который был бы прозрачен для пользователя, - отслеживать последний выбранный элемент и всякий раз, когда SelectionChanged событие инициируется, и выбранный индекс равен -1, затем повторно выберите последнее значение.

1 голос
/ 23 октября 2017

Это работает, конечно, для предотвращения отмены выбора пользователем ... Добавьте эти 2 события в свой selectedListBox1 и установите для свойства CheckOnClick значение "True" в режиме разработки. (MSVS2015)

        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);
        }
0 голосов
/ 05 июня 2016

Одно решение, предложенное amccormack:

    private void hostsListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if(lstHosts.SelectedItem == null)
        {
            if(e.RemovedItems.Count > 0)
            {
                lstHosts.SelectedItem = e.RemovedItems[0];
            }
0 голосов
/ 30 января 2012

Чтобы отключить один или несколько параметров в вашем списке / выпадающем списке, вы можете добавить атрибут «отключен», как показано ниже.Это не позволяет пользователю выбрать эту опцию, и он получает серый оверлей.

ListItem item = new ListItem(yourvalue, yourkey);
item.Attributes.Add("disabled","disabled");
lb1.Items.Add(item);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...