2010-03-10 92 views
0

由於方法Add()將Object作爲參數,我可以添加例如datatables,然後取消它們?拆箱組合框項目

例如:

cmbEmpresa.Items.Add(dt1); 
cmbEmpresa.Items.Add(dt2); 
cmbEmpresa.Items.Add(dt3); 

然後像做:

datagrid.datasource=(DataTable)cmbEmpresa.SelectedItem; 

編輯:

和什麼有關添加不同類型的對象,我怎麼能他們根據拆箱SelectItem的原始類型?

回答

2

裝箱和拆箱實際上意味着將值類型更改爲對象,反之亦然,因此這可能不是您的意思。

您可以在ComboBox中存儲您喜歡的任何類型的對象,並根據需要轉換回原始類型。

+0

如果我添加不同類型的對象,例如DataTable和DataSet,如何根據對象的原始類型對它們進行取消操作? – Luiscencio 2010-03-10 21:32:49

+0

您可以使用GetType方法和typeof運算符來確定原始類型是什麼,然後相應地進行投射。 if(myObject.GetType()== typeof(string)){//投射到一個字符串並使用它。另一種方法(特別是如果只有很少的選擇是使用As運算符,如果它已經是該類型,則將該對象轉換爲特定類型,否則返回null,例如string s = myObj as String; if(s!= null){//使用它作爲字符串 – 2010-03-10 21:38:33

+0

使用反射來檢查一個轉換是否有效'.GetType()== typeof(blah)'不會正確處理繼承。 'as'或'is'運算符,請看'Type.IsAssignableFrom'(http://msdn.microsoft.com/en-us/library/system.type.isassignablefrom.aspx)方法。 – 2010-03-10 21:46:34