Я пытаюсь добавить обработчик событий в класс, который ссылается на событие элемента управления формы, экземпляр которого создается в этом классе. Все классы существуют в одном пространстве имен.
Программа основана на приложении 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)
{
...
}
...
}
И изнутри 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
.