比如说TextBox1:System.Windows.Form.TextBox,包括方法tm1();
Control1:System.Windows.Form.Control,包括方法cm1();
现在我要实现TextBox2,自动带有TextBox1.tm1和Control1.cm1()

解决方案 »

  1.   

    public class TextBoxEx:TextBox
    {
    }
      

  2.   

    C#不支持多继承。你可以使用扩展方法给一个类附加额外的方法,代替继承。比如
    static class ControlHelper
    {
        public static void cm1(this Control c) { }
    }这样所有Control以及Control的派生类都可以使用cm1这个方法了。
      

  3.   

    问题根源在于
    从逻辑上讲,TextBox应该是Control1的继承类,
    从继承树上讲,TextBox只是Control的继承类,而不是Control1的继承类再补充一下,要求在.Net2.0中使用多继承解决
      

  4.   

    楼主上点代码啊 都不知道你的 Control1是继承哪个或者是什么类
      

  5.   

    C#是强类型语言,然而使用扩展方法似乎打破这一特性问一下,C++能否可以实现我的要求我曾用C++试了一下,它的多继承也并不是可以乱来的
      

  6.   


    Control1:System.Windows.Form.Control
      

  7.   

    C#不支持多继承.你上面的这两个类,都是普通的类,不是接口,所以不能达到这个功能.
    如果是接口的话,比如接口IA,IB,都包含有Show(),即你的类要实现IA,IB的,也是要"显示实现接口"才行.
    这是题外话了.
    你上面的要求是无法实现,C#可以多继承接口,但是拒绝多继承类.
      

  8.   


    Control1:System.Windows.Form.Control如果你不想修改现在的类实现,你可以考虑TextBox2类组合 TextBox1和Control1 两个对象
    在TextBox2中定义 tm1()  cm1() 里面实现就调用相应类的方法 ,间接调用
      

  9.   


    public class TextBox2:TextBox
    {
        TextBox2 t1;
        Control1 c1;   //略
       
        public void tm1()
        {
            t1.tm1();
        }
        public void cm1()
        {
           c1.cm1();
        }
    }
    楼主这样能实现你要求么
      

  10.   

      TextBox2 t1;==>TextBox1