可以用Convert.ChangeType (Object, Type) 
但是你转过来之后怎么用呢?你拿到的还是Control 类型所以还不如用判断分支处理

解决方案 »

  1.   

    用了之后还是object没有用阿,能不能变成label之类的呢
      

  2.   

    如果是object可以在前面加(label)转换一下
      

  3.   

    可是要转换的type的动态获得的,那要怎么写呢?
      

  4.   

    if(con  is Label)
       Label l = (Label)con;
    else if(con is CheckBox)
       CheckBox c = (CheckBox)con;
    else if....
      

  5.   

    只能这样了吗?
    CheckBox   c   =   (CheckBox)con; 
    有没有别的表达方式
      

  6.   

    CheckBox c = con as CheckBox; 
      

  7.   

    CheckBox   c   =   con   as   CheckBox;  因为不知道新的控件的类型,所以CheckBox   c 没办法写,有没有别的办法啊
      

  8.   

    楼主,你没搞清楚状况,假设你知道了新控件的类型叫XType,你也一样无法后继的编码.
    两种情况:
    1.你在后续代码中要用到特定控件属性,如c.Checked属性,只有CheckBox有,所以你必须硬编码Check类型
    2.你在后续代码中不需要用于特定控件属性(方法),你只需要调用虚拟函数,会自动调用派生类的方法,如c.GetType()