[英]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 AppForm
在AppForm.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
是可访问的, someToolStripMenuItem
是public
。
编译器认为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.