2011-09-22 99 views
0

我想讓客戶選擇從COMBOBOX中選擇一個城市,一旦城市選擇,該城市的街道列表應該在COMBOBOX2中。我嘗試了下面的代碼,並且在第一次運行期間出現錯誤,也許有人可以向我解釋這一點?組合框選定的值更改

private void Search_by_Apartment_Load(object sender, EventArgs e) 
    { 
     List<Cities> city = DAL.cities(); 
     cmBxCity.DataSource = city;//Here he ran the second function, why? 
     cmBxCity.DisplayMember = "city"; 
     cmBxCity.ValueMember = "cityID"; 
    } 

    private void cmBxCity_SelectedIndexChanged(object sender, EventArgs e) 
    { 

     List<Streets> street = DAL.streets(Convert.ToInt32(cmBxCity.SelectedText)); 
     // List<Streets> street = DAL.streets(Convert.ToInt32(cmBxCity.SelectedValue)); 
     comBxStreet.DataSource = street; 
     comBxStreet.DisplayMember = "street"; 
     //cmBxCity.ValueMember = "cityID"; 

    } 
+2

錯誤是什麼? –

+0

你收到的錯誤是什麼?是否有一個原因,你使用SelectedText而不是SelectedValue來選擇你的街道? – Brettski

+0

@Brettski,是的因爲價值獲得「」,我不知道方式?和SelectedValue獲取字符串,它也不是我想要做的事情嗎? – samy

回答

0

只要所選索引以編程方式或由用戶更改,就會觸發SelectedIndexChanged事件。

作爲的Davide PIRSA指出,當改變cmBxCity的DataSource,你正在編程改變所選擇的索引,因此,在這行燒成「cmBxCity.SelectedIndexChanged」事件:

cmBxCity.DataSource = city;//Here he ran the second function, why? 

一種可能的解決方案是改爲使用SelectionChangeCommitted事件,該事件僅在用戶進行更改時觸發。

+0

非常感謝 – samy

0
當你指定的從一無所有到一個項目 cmBxCity控制其將selectedItem變化 DataSource,這觸發事件處理程序 cmBxCity_SelectedIndexChanged

在你說的COMBOBOX和COMBOBOX2的問題中,但在代碼中只有一個控件是:cmBxCity

不應該在第二個控件中顯示街道:cmBxStreet

+0

我更新我的代碼 – samy

+0

你說得對。我該怎麼辦他不會第一次來到cmBxCity_SelectedIndexChanged? – samy

+0

是的,但現在清楚爲什麼當您分配數據源時第二個方法觸發爲什麼? –

相關問題