2017-01-08 3 views
0

2つのコンボボックスがあります。 txtlocationtxtstepコンボボックスフィルター(C#はその他の値)

私はtxtlocationのこれらの項目statically.Theアイテムを追加は、以下のとおりです。TO QC TP MAT SUP DCC FIN REC SIG

そしてtxtstep項目は以下のとおりです。

TO As SUP 
TO As PIP 
TO HW 
TO MOD 
TO FSQ 
QC HW 
QC LC 
QC RE 
QC TEST 
QC PAD 
QC WJCS 
TP 
MAT NIS 
MAT DATA 
SUP ASBUILT 
SUP REPORT 
SUP REPORT/ASBUILT 
DCC MONO LC 
DCC MONO RE 
FIN LC 
FIN PAD 
FIN TEST 
FIN DRY 
FIN FL 
FIN RE 
REC FIN LC 
REC FIN PAD 
REC FIN TEST 
REC FIN DRY 
REC FIN FL 
REC FIN RE 
SIG LC 
SIG PAD 
SIG TEST 
SIG DRY 
SIG FL 
SIG RE 

は、私は、ユーザー.IF txtlocationにイベント(selectedindexchang)を追加しますTO を選択し、TOのステップをフィルタリングする必要があります。 TO As SUP TO As PIP TO HW TO MOD TO FSQ

データソースを使用する必要がありますか?

private void txtlocation_SelectedIndexChanged(object sender, EventArgs e) 
     { 
     } 
+0

「DataSet」を使用できます。または、名前の配列を作成してフィルタリングすることもできます。 – Prajwal

+0

@Prajwalはコンボボックスのアイテムリストを直接フィルタリングできますか? –

+0

はい。または、もう一方のコンボボックスの値が設定されると、項目を追加できます。 – Prajwal

答えて

1

異なるデータソースを使用すると、対応するデータソースを選択した値をリンクするためDictionary<TLocation, List<TStep>>を使用することができ、多分明確な方法になります。

private Dictionary<string, List<string>> _data = new Dictionary<string, List<string>> 
{ 
    { "TO", new List<string> { "TO AS SUP", "TO AS PIP" }}, 
    { "DCC", new List<string> { "DCC MONO LC", "DCC MONO RE" }}, 
    { "MAT", new List<string> { "MAT NIS", "MAT DATA" }}, 
}; 

comboBoxLocation.DataSource = data.Keys.ToList(); 

位置の選択にbeased正しいデータソースを設定するために使用SelectedValueChangedイベントハンドラ。

private void comboBoxlocation_SelectedValueChanged(object sender, EventArgs e) 
{ 
    var comboBoxLocations = (ComboBox)sender; 
    comboBoxSteps.DataSource = _data[comboBoxLocations.SelectedValue.ToString()]; 
} 

ステップのリストが1つしかない場合は、リストをフィルタリングし、フィルタリングされた結果をDataSourceとして設定できます。

private void comboBoxlocation_SelectedValueChanged(object sender, EventArgs e) 
{ 
    var comboBoxLocations = (ComboBox)sender; 
    var selectedLocation = comboBoxLocations.SelectedValue.ToString(); 
    comboBoxSteps.DataSource = _AllSteps.Where(step => step.StartsWith(selectedLocation)) 
             .ToList(); 
} 

この方法では、場所のコンボボックスを変更するたびにリストをループします。

関連する問題