2015-12-21 17 views
-3

我試圖設計一個簡單的Windows窗體應用程序。如果我選​​擇代表國家的組合框。然後再次如果我選擇任何國家,那麼在另一個組合框中的國家將來。最後,如果我們選擇一個國家,那麼相應的城市將出現在另一個組合框。第一次,如果我做我的操作,它工作正常..但第二次如果我在這裏做任何修改則串聯.. 是我的代碼 -如何避免在組合框中的串接

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (comboBox1.SelectedItem.ToString() == "INDIA") 
    { 
     string[] Country = { "Andhra Pradesh", 
     "Karnataka","Maharashtra"}; 
     comboBox2.Items.AddRange(Country);    
    } 
    else if (comboBox1.SelectedItem.ToString() == "USA") 
    { 
     comboBox2.Items.AddRange(new string[] { "Alabama", 
     "Alaska", "Arizona"}); 
    } 
    else if (comboBox1.SelectedItem.ToString() == "CHAINA") 
    { 
     comboBox2.Items.AddRange(new string[] { "Beijing Municipality", 
     "Tianjin Municipality", "Hebei Province"}); 
    }   
} 

private void comboBox2_SelectedIndexChanged(object sender, EventArgs e) 
{   
    if (comboBox2.SelectedItem.ToString() == "Andhra Pradesh") 
    { 
     comboBox3.Items.AddRange(new string[] { "Adilabad","Anantapur","Chittoor","Kakinada","Guntur","Hyderabad",   "Khammam","Kurnool","Medak","Nizamabad","Visakhapatnam","Warangal","Eluru"}); 
    } 
    else if (comboBox2.SelectedItem.ToString() == "Karnataka") 
    { 
     comboBox3.Items.AddRange(new string[] { "Bengaluru Urban", "Bengaluru Rural", "Chikkaballapur", "Kolar", "Mysuru" }); 
    } 
    else if (comboBox2.SelectedItem.ToString() == "Maharashtra") 
    { 
     comboBox3.Items.AddRange(new string[] { "Mumbai", "Pune", "Nagpur", "Thane", "Nashik" }); 
    } 
    else if (comboBox2.SelectedItem.ToString() == "Alabama") 
    { 
     comboBox3.Items.AddRange(new string[] { "Margaret","Helena","Southside","Mountain Brook","Vestavia Hills"}); 
    } 
    else if (comboBox2.SelectedItem.ToString() == "Alaska") 
    { 
     comboBox3.Items.AddRange(new string[] { "Anchorage", "Fairbanks", "Juneau", "Sitka", "Ketchikan" }); 
    } 
    else if (comboBox2.SelectedItem.ToString() == "Arizona") 
    { 
     comboBox3.Items.AddRange(new string[] { "Apache Junction", "Avondale", "Benson", "Buckeye", "Bullhead City" }); 
    } 
    else if (comboBox2.SelectedItem.ToString() == "Beijing Municipality") 
    { 
     comboBox3.Items.AddRange(new string[] { "Dongcheng", "Xicheng", "Chaoyang", "Fengtai ", "Miyun " }); 
    } 
    else if (comboBox2.SelectedItem.ToString() == "Tianjin Municipality") 
    { 
     comboBox3.Items.AddRange(new string[] { "Heping", "Hedong", "Xiqing", "Nankai", "Beichen" }); 
    } 
    else if (comboBox2.SelectedItem.ToString() == "Hebei Province") 
    { 
     comboBox3.Items.AddRange(new string[] { "Baoding‎", "Bazhou", "Chengde‎", "Handan‎", "Langfang‎" }); 
    }   
} 

請建議我的傢伙我應該在我的代碼修改?

+0

您是否嘗試過調試您的代碼? – xxbbcc

+0

nope brother @xxbbcc – chikun

+0

確保在綁定前清除組合框。使用comboBox2.Clear – Moe

回答

0

由於每次選擇從combobox1(國家)或combobox2(州)你想「從頭再來」,你必須先清除相應的事件的二次組合框,如什麼時間:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    combobox2.Items.Clear(); 
    combobox3.Items.Clear(); 
    . . . 
} 

private void comboBox2_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    combobox3.Items.Clear(); 
    . . . 
} 

另外,最好給你的控件提供有意義的名字。而不是讓他們保留默認的通用名稱,給他們名稱,如comboboxCountries,comboboxStates,comboBoxCities。這將使調試更容易。

最後,最好將名單(國家,州和省,城市/鎮)保存在數據庫中,或者至少在某種單獨維護的清單中。把它們都放在迷宮般的地方,如果塊子最終會讓你變得雜亂無章。

+1

感謝很多兄弟..它解決了我的問題。現在我懂了 。這個清除()函數是清除列表items.Thanks再次..你的建議是高度讚賞..下一次我會給用戶友好的名字:) – chikun

+1

@chikun如果他的答案是你需要你應該接受它(標記它勾號) –

+0

已經接受:) @KevinWells – chikun