Я хочу использовать ComboBox с стилем DropDownList (тот, который делает его похожим на кнопку, поэтому вы не можете ввести значение), чтобы вставить значение в текстовое поле. Я хочу, чтобы у combobox была текстовая метка под названием "Wildcards", и когда я выбираю подстановочный знак из списка, выбранное значение вставляется в текстовое поле, а текст со списком остается "подстановочным". Моя первая проблема заключается в том, что я не могу установить текстовое значение, когда combobox находится в стиле DropDownList. Использование палитры свойств не работает, текстовое значение просто очищается при нажатии, добавив comboBox.Text = "Wildcards"; to form_load тоже не работает. Может ли кто-нибудь помочь?
С# ComboBox в стиле DropDownList, как мне установить текст?
Ответ 1
Указанный вами код:
comboBox.Text = "Wildcards";
... должен работать. Единственная причина, по которой это не будет, это то, что указанный вами текст не является элементом в списке элементов comboBox. При использовании стиля DropDownList вы можете установить только текст в значения, которые действительно отображаются в списке.
Если это так, вы пытаетесь установить текст в Wildcards, и этот элемент не отображается в списке, а альтернативное решение неприемлемо, возможно, вам придется быть немного грязным с кодом и добавить временно удаляется, когда раскрывающийся список расширяется.
Например, если у вас есть форма, содержащая 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, вы можете немного его очистить, добавив элемент "Подстановочные знаки" по мере необходимости.
Ответ 2
Вы можете выбрать один из элементов в formload или в конструкторе форм:
public MyForm()
{
InitializeComponent();
comboBox.SelectedIndex = 0;
}
или
private void MyForm_Load(object sender, EventArgs e)
{
comboBox.SelectedIndex = 0;
}
Ответ 3
Попробуйте это
comboBox1.SelectedValue = "Wildcards";
Ответ 4
Это может быть возможным решением:
comboBox1.SelectedValue = comboBox1.Items.FindByText("Wildcards").Value;