2015-07-13 2 views
1

При выполнении следующего кода в WFAComboBox.DropDownHeight значения не изменяется при добавлении или удалении элементов

public partial class Form1 : Form 
{ 
    string[] items = { "A", "B", "C", "D", "E" }; 

    public Form1() 
    { 
     InitializeComponent(); 
     UpdateDropDownHeight(); 
    } 

    private void UpdateDropDownHeight() 
    { 
     textBox1.Text = comboBox1.DropDownHeight.ToString(); 
    } 

    private void button_populate_Click(object sender, EventArgs e) 
    { 
     for(int i = 0; i<items.Length; i++) 
     { 
      comboBox1.Items.Add(items[i]); 
     } 
     UpdateDropDownHeight(); 
    } 

    private void button_clear_Click(object sender, EventArgs e) 
    { 
     comboBox1.Items.Clear(); 
     UpdateDropDownHeight(); 
    } 
} 

Я заметил, что значение combobox1.DropDownHeight никогда не изменяется при добавлении новых элементов в поле со списком. Очевидно, что выпадающая область явно изменяется при нажатии button_populate.
Других пользователей вопрос

Combo Box Size Issue After All Items Are Removed

обеспечивает несколько запутанного ответ о том, как изменить размер кажущегося падения вниз области после удаления элементов. Какова же цель свойства DropDownHeight и что меняется видимая область падения в ComboBox?

+0

Свойство IntegralHeight также играет важную роль. В большинстве случаев большинство дизайнеров хотят увеличить высоту раскрывающегося списка, чтобы просто показывать больше вариантов по умолчанию. Я не знаю, какую проблему вы пытаетесь решить. – LarsTech

+0

Когда я заполняю, затем очищаю элементы в comboBox и щелкаю выпадающее меню, я вижу 5 пустых мест в выпадающем меню. Я хочу знать, есть ли простой способ ввести что-то вроде comboBox1.dropDownHeight = значение , чтобы настроить диапазон видимых выпадающих меню. – Zambis

+0

Попробуйте установить значение IntegralHeight в false. – LarsTech

ответ

1

Также не совсем уверен, какую проблему вы пытаетесь решить, но если вы пытаетесь отрегулировать высоту DropDownHeight, это может быть достигнуто ниже.

private void UpdateDropDownHeight() 
{ 
    int dropDownHeight = 0; 
    for (int i = 0; i <= comboBox1.Items.Count; i++) 
    { 
     dropDownHeight = dropDownHeight + (comboBox1.ItemHeight); 
    } 
    comboBox1.DropDownHeight = dropDownHeight; 
    textBox1.Text = comboBox1.DropDownHeight.ToString(); 
} 
+0

Спасибо. Это устраняет мою проблему. Кажется, что свойство DropDownHeight изменяется только тогда, когда оно установлено из моего кода. – Zambis

+0

Я не получаю ваш код. Почему вы должны добавить высоту элемента в цикле? Я спрашиваю об этом, потому что если бы существовал сценарий, когда Items.Count был бы более двух, то каждая итерация ItemsHeight добавляется в dropDownHeight. –

Смежные вопросы