繁体   English   中英

C#无法从父类访问Form的公共成员

[英]C# Can Not Access public member of Form from Parent Class

我试图在一个类中添加一个事件处理程序,该类引用在该类中实例化的表单控件的事件。 所有类都存在于同一名称空间中。

该程序基于ApplicationContext表单应用程序。 Program.cs static void Main()

CustomApplicationContext applicationContext = new CustomApplicationContext();
Application.Run(applicationContext);

public class CustomApplicationContext

public class CustomApplicationContext : ApplicationContext
{
    //create the application form
    Form appForm;

    public CustomApplicationContext() 
    {
        InitializeContext();

        //create instance of appForm
        appForm = new AppForm();

        //subscribe event handler to form closing event
        appForm.FormClosing += form_FormClosing; //this works fine

        //subscribe event handler to form control click event
        appForm.someToolStripMenuItem.Click += form_Click; //doesn't compile

        //can't even find appForm.someToolStripmenuItem in code completion!
    }

    void form_FormClosing(object sender, FormClosingEventArgs e)
    {
        ...
    }

    void form_Click(object sender, EventArgs e)
    {
        ...
    }

    ...
}

而从内public partial class AppFormAppForm.Designer.cs这是由设计师,在那里我做了控制修改生成的public和我所做的类public

public partial class AppForm  //note that I made this public
{
    ...

    this.someToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();

    ...

    // 
    // someToolStripMenuItem
    // 
    this.someToolStripMenuItem.Name = "someToolStripMenuItem";
    this.someToolStripMenuItem.Size = new System.Drawing.Size(178, 22);
    this.someToolStripMenuItem.Text = "Some Item";

    ...

    public System.Windows.Forms.ToolStripMenuItem someToolStripMenuItem;
}

我究竟做错了什么? 当我输入appForm. someToolStripMenuItem甚至没有出现在代码完成框中,好像它在上下文中不可访问 - 但是appForm是可访问的, someToolStripMenuItempublic

编译器认为appForm是一个Form而不是AppForm因为你声明它的方式:

Form appForm;

尝试将声明更改为AppForm appForm; 或者把它像:

((AppForm)appForm).someToolStripMenuItem.Click += form_Click;

问题是您的appForm字段被声明为Form类型。 Form类没有名为someToolStripMenuItem成员。 您需要将您的字段声明为AppForm类型才能访问该类型的成员。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM