С# ComboBox в стиле DropDownList, как мне установить текст?

Я хочу использовать ComboBox с стилем DropDownList (тот, который делает его похожим на кнопку, поэтому вы не можете ввести значение), чтобы вставить значение в текстовое поле. Я хочу, чтобы у combobox была текстовая метка под названием "Wildcards", и когда я выбираю подстановочный знак из списка, выбранное значение вставляется в текстовое поле, а текст со списком остается "подстановочным". Моя первая проблема заключается в том, что я не могу установить текстовое значение, когда combobox находится в стиле DropDownList. Использование палитры свойств не работает, текстовое значение просто очищается при нажатии, добавив comboBox.Text = "Wildcards"; to form_load тоже не работает. Может ли кто-нибудь помочь?

Ответы

Ответ 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;