2010-03-10 89 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