2013-12-20 4 views
1

List<string>에 바인딩 된 ToolStripComboBox가 있습니다. 초기화 후 표시되는 텍스트를 String.Empty으로 설정하고 싶습니다.DataSource를 사용하여 ToolStripComboBox에 대해 'Start-Text'가 비어있게 설정하십시오.

문제는 컨트롤을 초기화 한 후 텍스트가 항상 내 목록 의 첫 번째 항목입니다 (예상되는 내용이지만이 미리 선택된 텍스트를 지우지 못합니다).

이 내 관련 코드입니다 :

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