1

すべてのフォームに使用する基本テンプレートがあるプロトタイプ ベースのフォーム アプリケーションを作成しています。テンプレートには、コントロールの構築中に実際のフォームから呼び出す必要があるメソッドがあります。

Form1.cs:

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

Form1.Designer.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 が見つかりませんと表示されます。アプリを実行しても、メソッドが呼び出されていないようです。

ありがとう。

4

2 に答える 2

1

Form1.cs からメソッドAddControlを呼び出すようにしてください。Form1.Designer.csから呼び出さないでください。

その方法がまだ失敗した場合はお知らせください。:)

于 2013-10-20T03:27:50.873 に答える
0

これは 2 番目の代替案です。

この部分を変えるだけ

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

これに:

public void AddControl(Label lbl, Control ctrl)
{
    //do something
}
于 2013-10-20T08:15:02.347 に答える