【发布时间】:2015-09-07 10:54:46
【问题描述】:
我正在尝试在一个类中添加一个事件处理程序,该处理程序引用在该类中实例化的表单控件的事件。所有类都存在于同一个命名空间中。
该程序基于ApplicationContext 表单应用程序。在static void Main() 内Program.cs 内
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)
{
...
}
...
}
在设计器生成的AppForm.Designer.cs 中的public partial class AppForm 中,我制作了控件修饰符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。
【问题讨论】:
-
所以类是公开的,但成员也是公开的吗?小写名称通常指出非公共变量。
-
感谢您的提示,我会在我的代码中更新它。
标签: c# winforms applicationcontext