假设类MyControl派生于UserControl。
定义了一个函数: 
void fun(Control control)
{
      //对该control进行转换
      MyControl tempControl = (MyControl)control,
}
调用函数fun时传入一个传入一个MyControl类型的对象myControl,结果产生异常信息“无法将类型为“MyControl”的对象强制转换为类型“MyControl”哪位大牛知道原因吗

解决方案 »

  1.   

    我调用时传入的是MyControl类型的对象,应该没问题的阿
      

  2.   

    void fun(MyControl control)
    {
          //对该control进行转换
          MyControl tempControl = (MyControl)control,
    }
      

  3.   

    MyControl c1  = control as MyControl;
    if(c1 != null)
      ...
      

  4.   

    关于void fun(MyControl control),我的实现必须在参数中用基类
    关于使用as,返回的是null,但明明传入的是MyControl对象阿
      

  5.   

    public class MyControl:UserControl
    {
    public int tag;
    public MyControl()
    {
    tag=1;
    } public void function(Control control)
    {
                MyControl a = (MyControl)control;
                Console.WriteLine(a.tag.ToString());
    }
    }class Class1
    {
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
    MyControl myControl= new MyControl();
    myControl.function(myControl);
    }
    }
    试过了,可以的。
    是不是传进去的参数本身不是Mycontrol类型的
      

  6.   

    void fun(Control control)
    {
          //对该control进行转换
          MyControl tempControl = (MyControl)control,
    }在传参的时候已经把MyControl转换成了Control,然后你又把Contorl转换成MyContorl,给为下面的看看行不行
    void fun(object control)
    {
          //对该control进行转换
          MyControl tempControl = control as MyControl,
    }
      

  7.   

    传进去的参数类型错误
    应该传入一个传入一个Control类型的对象
    而不是MyControl类型的对象
    可能改了就没问题了
      

  8.   

    改为object也不行啊
    传入的control在debug下的类型信息如下:
    control {FieldControl.FlyUIFieldControl} System.Windows.Forms.Control {FieldControl.FlyUIFieldControl}
    + [FieldControl.FlyUIFieldControl] {FieldControl.FlyUIFieldControl} FieldControl.FlyUIFieldControl
    + base {FieldControl.FlyUIFieldControl} System.ComponentModel.Component {FieldControl.FlyUIFieldControl}
    + AccessibilityObject {ControlAccessibleObject: Owner = FieldControl.FlyUIFieldControl}
    。。
    其中FlyUIFieldControl就是刚才说的MyControl,继承于UserControl
      

  9.   

    我具体是这样用的,首先使用反射动态生成一个MyControl类型的对象,然后将其保存到Control数组中,然后将其取出,传给Fun函数,结果就生成异常了
      

  10.   

    commandown(它山之石) ,当传入的控件是Form2.0控件时代码没问题
      

  11.   

    我的用法是MyControl tempControl = control as MyControl,