2014-10-15 3 views
0

콤보 상자와 목록 상자가있는 양식이 있습니다.Windows Forms C# 콤보 상자 목록 상자

사용자가 콤보 상자 목록에서 선택하면 모든 목록 상자 레코드가 표시되어야합니다. 그러나 사용자가 dbo를 선택하면 dbo.abc 레코드 만 목록 상자에 표시됩니다. 사용자가 INFORMATION_SCHEMA.abc가있는 INFORMATION_SCHEMA 레코드를 선택해야합니다. 내 영어는 훌륭하지 않습니다. 네가 내 질문을 모두 이해하기를 바랍니다.

도와주세요.

+0

사용 콤보 텍스트 이벤트를 변경 – Astro

+1

불행히도 아니오, 아무런 의문의 여지가 없으므로 이해할 수 없습니다 ... 한 줄의 코드도 작성 했습니까? 또는 자습서를 요청하고 있습니까? – Leo

+0

예 .. 그리고 물건 코드를 써주세요 .. – Astro

답변

1

이와 같은 문제를 해결할 수있는 방법은 많이 있습니다.

첫 번째 시도는 Dictionary<string, List<string>>을 만들고 모든 키를 Combobox에 추가해야합니다. 그들은 당신의 "dbo.abc"이고 그 값은 해당 레코드입니다.
Combobox 인덱스가 변경된 경우 목록 상자를 지우고 해당 목록의 모든 항목을 목록에 추가합니다.

모든 항목에 대해 "모든 목록"항목을 추가 할 수 있습니다. 그런 다음 키가 사전에 있는지 확인하기 위해 테스트에서 존재하지 않는 경우 foreachyourDictionary.Values을 입력하고 모두 목록에 추가하십시오.

아마도 그렇게 할 것입니다. 그러나 거기에 많은 사람들이 어쩌면 당신은 당신의 예에서이 :)

편집과 같은 사소한 질문을하기 전에 C# 언어를 개선하기 위해 시작해야합니다 (목록 상자를 상정하는 것은 cmbList입니다) :

private Dictionary<string, List<string>> _items; 

private void cmbUsers_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    var cmbText = cmbUsers.SelectedText; 
    cmbList.Items.Clear(); 

    if (_items.ContainsKey(cmbText) 
    { 
     cmbList.Items.AddRange(_items[cmbList]);   
    } 
    else // default : show all items 
    { 
     foreach (var val in _items.Values) 
     { 
      cmbList.Items.AddRange(val); 
     } 
    }   
} 
+0

winforms에 익숙하지 않습니다. 당신이 이것을 어떻게하는지 더 자세히 설명 할 수 있습니까? –

+0

cmbList를 listBox 이름으로 변경 한 다음 복사하여 복사하십시오 :) –

+0

이 질문에 대한 답변이 되었습니까? –