Member 13975729 Ответов: 2

Как заставить combobox отображать текст, если пользователь начинает вводить символы, содержащиеся в коллекции combobox? С#


например
в коллекции есть пункт "студент"
если пользователь начинает вводить "S", текст combobox должен искать этот символ и начинать отображать/ предлагать текст "студент". если символ не совпадает он остается пустым

Что я уже пробовал:

частная cmbType_TextChanged недействительным(объект отправителя, EventArgs в электронной)
{
если (cmbType.Текст.Содержит(cmbType.Текст.ToUpper()))
{
ВАР пользования = это.cmbType.GetItemText(this.cmbType.Элемент);
//var type = cmbType.Предметы.Метод toString().Где(c =>
cmbType.Text.ToUpper().Contains(cmbType.Text.ToUpper()));
cmbType.Текстовый элемент;
}
}

littleGreenDude

Что это за комбо-бокс? Стандартные Microsoft, Telerik, другие?

Ищите свойство AutoComplete или AutoCompleteMode

Member 13975729

Окна.Формы.Комбинированный список
это приложение для .NET

2 Ответов

Рейтинг:
12

littleGreenDude

Во время загрузки формы...

// set up source for combo items
string[] items = { "item1", "Student", "Teacher", "Professor", "Teaching Assistent" };

// configure autocompletion for the combobox
AutoCompleteStringCollection allowedTypes = new AutoCompleteStringCollection();
allowedTypes.AddRange(items);
comboBox1.AutoCompleteCustomSource = allowedTypes;
comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
comboBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;


Member 13975729

Этот пример не позволит мне ввести больше, чем на символ в комбо, и не позволит отображать предложения.
он также создает исключение в случае, если я набираю букву, а затем нажимаю backspace.

littleGreenDude

Работать на меня...

Я создал приложение Windows form и перетащил стандартный элемент управления combobox на форму. В дизайне нажал на форму. Выберите пункт "события" в окне свойств. Прокрутите вниз до пункта "загрузить" в списке и добавьте событие "Form1_Load". Полный код формы выглядит следующим образом:

использование системы;
использование системы.Коллекции.Общий;
использование системы.ComponentModel;
использование System.Data;
использование системы.Рисование;
использование System.Linq;
использование System.Text;
использование системы.Нарезание резьбы.Задачи;
использование системы.Окна.Формы;

пространство имен WindowsFormsApp1
{
общественности частичного класс form1 : форма
{
открытый form1()
{

метод InitializeComponent();
}

частный недействительными методе form1_load(объект отправителя, EventArgs в электронной)
{
// настройка источника для комбинированных элементов
строка[] пользования = { "элемент1", "студент", "преподаватель", "профессор", "преподавание ассистент" };

// настройка автозаполнения для выпадающего списка
AutoCompleteStringCollection allowedTypes = новый AutoCompleteStringCollection();
разрешенные типы.AddRange(items);
поле combobox1.AutoCompleteCustomSource = allowedTypes;
comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
comboBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
}
}
}

Рейтинг:
1

Raghav Khurana

попробовать это:
класс DummyComboBoxItem
{
общественные строке "отображаемое имя"
{
получить
{
возврат "сделайте выбор ...";
}
}
}
public partial class mainForm : форма
{
частный заполнитель DummyComboBoxItem = новый заполнитель DummyComboBoxItem();
публичная основная форма()
{
метод InitializeComponent();

myComboBox.DisplayMember = "Отображаемое Имя";
myComboBox.Предметы.Добавить(заполнитель);
foreach(object o in Objects)
{
myComboBox.Предметы.Добавить(o);
}
myComboBox.SelectedItem = заполнитель;
}

частная myComboBox_SelectedIndexChanged недействительным(объект отправителя, EventArgs в электронной)
{
если (myComboBox.SelectedItem == null) return;
если (myComboBox.SelectedItem == placeholder) return;
/*
делай свое дело
*/
myComboBox.Предметы.Добавить(заполнитель);
myComboBox.SelectedItem = заполнитель;
}

частная myComboBox_DropDown недействительным(объект отправителя, EventArgs в электронной)
{
myComboBox.Предметы.Удалить(заполнитель);
}

частная myComboBox_Leave недействительным(объект отправителя, EventArgs в электронной)
{
//это относится к прерыванию пользователем выбора (щелчком мыши или выбором раскрывающегося списка system null)
//Элемент управления может измениться не сразу, но если пользователь нажмет кнопку в другом месте, он будет сброшен
если(myComboBox.SelectedItem != заполнитель)
{
если(!myComboBox.Предметы.Содержит(заполнитель)) myComboBox.Предметы.Добавить(заполнитель);
myComboBox.SelectedItem = заполнитель;
}
}
}


Member 13975729

Я действительно не понимал, что делает этот код.