读书人

散分……至于控件继承

发布时间: 2011-12-18 22:54:38 作者: rapoo

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

构造函数()
{
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的原因是因为子类可以选择使用父类的那一个构造函数

读书人网 >C#

热点推荐