我有一个窗体,还需要做很多类似的窗体,我想重用现在的窗体而不是去按照现有的窗体再一一新建,可以自定义一个窗体然后继承现有的窗体么?现有窗体还需要外部传入数据。c#窗体

解决方案 »

  1.   

    可以,定义个基类form,其他的窗口都继承基类form
      

  2.   

    太简单了public class newform:old form
      

  3.   


    在你的vs上工程中,点“添加->新建项->windows form->继承的窗体”!
      

  4.   

    我现在只有窗体没有dll文件,是要先将我已有的窗体生成dll文件在来用它继承么?
    我这种设计思想有没有曲解继承的本意呢?求教啊~
      

  5.   

    是的,把父画面做成一个dll,引用这个dll,把新作的画面改为继承自这个父类
      

  6.   

    什么叫做“生成dll文件在用它继承”?你没有使用vs吗?你难道是在写低级的java程序?什么叫做“曲解继承的本意”呢?我不知道你指的具体是什么。
      

  7.   

    那你先了解一下继承的概念,父类中的什么级别(public, protected,private)的才可以被继承,才可见。
    当然还有virtual,override,abstract,interface等几个概念
      

  8.   

    如果你需要触发事件,例如        private void button1_Click(object sender, EventArgs e)
            {
                a();
            }
    那么你可以把它提取出来,例如        private void button1_Click(object sender, EventArgs e)
            {
                OnButton1Click();
            }        protected void OnButton1Click()
            {
                a();
            }
    这样就可以调用了。
      

  9.   

    这些我都有所了解了,也用过一些,不过都只是用class A:class B 这样的,窗体继承的没有用过,麻烦能不能介绍的详细一点或者指点一下在哪里可以找到相关示例。
      

  10.   

    如果你需要触发事件  --〉 如果你响应相同的事件处理方法
    同样地,如果需要触发事件,一样是protected调用,例如:        public event EventHandler<EventArgs> MyEvent;        protected void OnButton1Click()
            {
                if (MyEvent != null)
                    MyEvent(this, new EventArgs());
            }
      

  11.   

    类似地,假设你需要重写,那么可以定义为        protected virtual void OnButton1Click()
            {
                //.....
            }
      

  12.   

    额  这段代码有点没看懂啊,public event EventHandler<EventArgs> MyEvent是子窗体中触发的事件么?
      

  13.   

    和写ClassA:ClassB是一样的
    FormA:FormB
    FormB中的public的东西,对A来说都是可以用的