C# ComboBox в стиле DropDownList, как задать текст?



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

707   4  

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 = "Wildcards";

Это может быть возможным решением:

comboBox1.SelectedValue = comboBox1.Items.FindByText("Wildcards").Value;

Comments

    Ничего не найдено.