首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

散分……至于控件继承

2011-12-18 
散分……关于控件继承有一堆控件,存在类似的流程构造函数(){CheckQX()//检查权限,没有权限则卸载Initialize

散分……关于控件继承
有一堆控件,存在类似的流程

构造函数()
{
        CheckQX();//检查权限,没有权限则卸载
        InitializeComponent();//初始化子控件
        BeforeShow();//显示前子控件赋值
}

这3个方法每个控件都不一样,都要重写

另外这些控件都有一个属性值

我打算做一个父控件,大家来继承他,可是不知道这个父控件该怎么写

我这样写,可是不行,执行不到继承控件的方法里面
//父控件
public   class   _Parent   :   UserControl
public   _Parent()
                {
                        CheckQX();
                        InitializeComponent();
                        BeforeShow();
                }
public   virtual   void   BeforeShow()
                {
                }
                public   virtual   void   CheckQX()
                {
                }

子控件
public   _JC_DW()
                {
                        InitializeComponent();
                }
public   override   void   BeforeShow()
                {
                      ……   //重写
                }
                public   override   void   CheckQX()
                {
                        ……   //重写
                }

——————————————————————
以上代码不行,执行不到继承控件的CheckQX()和BeforeShow()
方法里面

难道每个子控件都要在构造里面这样写一遍:
public   _JC_DW()
                {
                        CheckQX();
                        InitializeComponent();
                        BeforeShow();
                }

大家遇到这种情况是怎么做的,请指教,分不够可以加,多谢了

[解决办法]
我想是因为你重写了子类的构造函数,才会导致这个问题的发生。
在子类里面把 构造函数去掉试试!
[解决办法]
我把你的代码贴过来,没有发现问题,可以执行

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication31
{
public class _Parent : UserControl
{
public _Parent()
{
MessageBox.Show( "111 ");
CheckQX();
BeforeShow();
}
public virtual void BeforeShow()


{
}
public virtual void CheckQX()
{
}
}
public class _child : _Parent
{
public _child()
{
}
public override void BeforeShow()
{
MessageBox.Show( "aa ");
}
public override void CheckQX()
{
MessageBox.Show( "bb ");
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
new _child();
}
}
}
[解决办法]
不可能的,不加base子类也一定执行父类的构造函数的,我用的vs2005
===============================================================
同意,使用base的原因是因为子类可以选择使用父类的那一个构造函数

热点排行