C# ComboBox в стиле DropDownList, как задать текст?
Я хочу использовать ComboBox со стилем DropDownList (тот, который делает его похожим на кнопку, поэтому вы не можете ввести значение), чтобы вставить значение в текстовое поле. Я хочу, чтобы у combobox была текстовая метка, называемая "подстановочные знаки", и когда я выбираю подстановочный знак из списка, выбранное значение вставляется в текстовое поле, и текст combobox остается "Подстановочным знаком". Моя первая проблема заключается в том, что я не могу установить текстовое значение, когда combobox находится в стиле DropDownList. Использование палеты свойств не работает текстовое значение просто очищается, когда вы нажимаете кнопку выкл, добавляя comboBox.Text = "Wildcards"; to form_load тоже не работает. Кто-нибудь может помочь?
4 ответов:
Указанный вами код:
comboBox.Text = "Wildcards";...должен работать. Единственная причина, по которой это не так, заключается в том, что указанный Вами текст не является элементом в списке элементов comboBox. При использовании стиля DropDownList можно задать только те значения текста, которые действительно отображаются в списке.
Если вы пытаетесь установить для текста подстановочные знаки и этот элемент не появляется в списке, а альтернативное решение неприемлемо, вам, возможно, придется немного испортить код и добавить элемент временно, что удаляется, когда раскрывающийся список будет расширен.
Например, если у вас есть форма, содержащая combobox с именем "comboBox1" с некоторыми элементами и кнопкой "button1", вы можете сделать что-то вроде этого:
private void button1_Click(object sender, EventArgs e) { if (!comboBox1.Items.Contains("Wildcards")) { comboBox1.Items.Add("Wildcards"); } comboBox1.Text = "Wildcards"; } private void comboBox1_DropDown(object sender, EventArgs e) { if (comboBox1.Items.Contains("Wildcards")) comboBox1.Items.Remove("Wildcards"); }Это довольно быстро и грязно, но, захватив событие DropDownClosed, вы можете немного очистить его, добавив элемент "подстановочные знаки" обратно по мере необходимости.
Вы можете выбрать один из элементов на formload или в конструкторе форм:
public MyForm() { InitializeComponent(); comboBox.SelectedIndex = 0; }Или
private void MyForm_Load(object sender, EventArgs e) { comboBox.SelectedIndex = 0; }
Это может быть возможным решением:
comboBox1.SelectedValue = comboBox1.Items.FindByText("Wildcards").Value;
Comments