从 InitializeComponent 调用基类方法

本文关键字:类方法 基类 调用 InitializeComponent | 更新日期: 2023-09-27 18:36:16

我正在创建一个基于原型的表单应用程序,其中将有一个基本模板可用于所有表单。模板中有一个方法,在构造控件时需要由实际窗体调用。

表格1.cs:

public partial class Form1 : FormBase
{
    public Form1():base()
    {
        InitializeComponent();
    }
    ...

表单1.设计器.cs:

private void InitializeComponent()
{
    this.lblName = new MLabel();
    this.fldName = new MTextBox();
    this.lblUserID = new MLabel();
    this.fldUserID = new MTextBox();
    this.SuspendLayout();
    this.AddControl(lblName, fldName);
    this.AddControl(lblUserID, fldUserID);

FormBase.cs:

public partial class FormBase : Form
{
    public FormBase()
    {
        InitializeComponent();
    }
    protected void AddControl(Label lbl, Control ctrl)
    {
        //do something
    }
    ...

没有编译错误,但是,当我在 IDE 中打开 Form1 设计时,它说找不到 FormBase.AddControl。即使我运行该应用程序,该方法似乎也没有被调用。

谢谢。

从 InitializeComponent 调用基类方法

尝试从 Form1.cs

调用方法 AddControl,不要从 Form1.Designer 调用它.cs

如果这种方式仍然失败,请告诉我。 :)

这是第二个备选方案:

只需更改此部分

protected void AddControl(Label lbl, Control ctrl)
{
    //do something
}

进入这个:

public void AddControl(Label lbl, Control ctrl)
{
    //do something
}