2013-12-20 2 views
1

У меня есть ToolStripComboBox, который привязан к List<string>. Я хотел бы установить видимый текст после инициализации до String.Empty.Установите пустой «Start-Text» для ToolStripComboBox с DataSource

Проблема в том, что независимо от того, что я делаю, текст после инициализации элемента управления всегда является первой записью моего списка (что ожидается, но мне не удается удалить этот предварительно выделенный текст).

Это мой соответствующий код:

public frmPricelist(Pricelist pricelist) 
    { 
     _pricelist = pricelist; 

     InitializeComponent(); 
     Init(); 
    } 

    private void Init() 
    { 
     cmbHersteller.Items.Clear(); 
     cmbHersteller.ComboBox.DataSource = _pricelist.GetHersteller(); 

     Application.DoEvents(); // Inserted for testing purposes 

     cmbHersteller.ComboBox.SelectedText = String.Empty; // does not change the value 
     cmbHersteller.ComboBox.Text   = String.Empty; // does not change the value    
    } 

Возможно, я скучаю за деревьями лес, но я просто не получить его на работу :).

ответ

1

На мой взгляд, лучший подход - фактически добавить пустой элемент. Учитывайте следующее:

private void Init() 
{ 
    cmbHersteller.Items.Clear(); 

    var list = _pricelist.GetHersteller(); 
    list.Insert(0, ""); 
    cmbHersteller.ComboBox.DataSource = list; 

    cmbHersteller.ComboBox.SelectedIndex = 0; 
} 
+0

Я тоже подумал об этом. Но я хотел бы избежать этого, если это возможно. – user1567896

+1

@ user1567896, проблема в том, что связанное с данными поле со списком напрямую использует связанные с данными элементы. Есть некоторые очень неприятные работы вокруг, что я не уверен даже в работе с версией панели инструментов со списком. Это самый точный и подходящий способ. –

+1

Боюсь, что вы правы. Я пробовал некоторые вещи, но этот небольшой контроль действительно очень противный. Я буду использовать текстовый манекен, например * <все производители> *, если фильтрация не требуется. Спасибо за Ваш ответ! – user1567896