C# 是否可以关闭事件处理程序中的窗体,其中事件处理程序位于类中?
我还在学习OOP。我目前正在尝试制作一个电影票亭,在那里你可以点击你喜欢的电影海报的按钮。Form1是主菜单窗体,其中显示3个按钮,分别命名为movibutton1、movibutton2、movibutton3。因此,基本上,我希望在单击某个按钮时隐藏Form1,但按钮的事件处理程序位于另一个类中。我希望事件处理程序留在类中C# 是否可以关闭事件处理程序中的窗体,其中事件处理程序位于类中?,c#,forms,class,event-handling,C#,Forms,Class,Event Handling,我还在学习OOP。我目前正在尝试制作一个电影票亭,在那里你可以点击你喜欢的电影海报的按钮。Form1是主菜单窗体,其中显示3个按钮,分别命名为movibutton1、movibutton2、movibutton3。因此,基本上,我希望在单击某个按钮时隐藏Form1,但按钮的事件处理程序位于另一个类中。我希望事件处理程序留在类中 public partial class Form1 : Form { public Form1() { InitializeCompon
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
buttonPosters();
}
private void buttonPosters()
{
derClassForForm1 classForm1 = new derClassForForm1();
moviButton1.Click += new EventHandler(classForm1.movPosterClicked);
moviButton2.Click += new EventHandler(classForm1.movPosterClicked);
moviButton3.Click += new EventHandler(classForm1.movPosterClicked);
}
}
public class derClassForForm1
{
public void movPosterClicked(object sender, EventArgs e)
{
Button posterClick = (Button)sender;
if (posterClick.Name.Equals("moviButton1"))
{
Mov1 movie = new Mov1();
Form2 movPoster = new Form2(movie.movTitle(), movie.movSynop(), movie.movImagesrc());
movPoster.Show();
}
else if (posterClick.Name.Equals("moviButton2"))
{
Mov2 movie = new Mov2();
Form2 movPoster = new Form2(movie.movTitle(), movie.movSynop(), movie.movImagesrc());
movPoster.Show();
}
else if (posterClick.Name.Equals("moviButton3"))
{
Mov3 movie = new Mov3();
Form2 movPoster = new Form2(movie.movTitle(), movie.movSynop(), movie.movImagesrc());
movPoster.Show();
}
//wanted to have like a form.hide() here
}
}
您可以将公共属性添加到类derClassForForm1中,如下所示: 然后您可以在方法按钮编辑器中修改代码: 这将使您能够在MovePosterClicked结尾处编写类似的内容:
public Form ParentForm {get; set;}
private void buttonPosters()
{
derClassForForm1 classForm1 = new derClassForForm1();
classForm1.ParentForm = this;
moviButton1.Click += new EventHandler(classForm1.movPosterClicked);
moviButton2.Click += new EventHandler(classForm1.movPosterClicked);
moviButton3.Click += new EventHandler(classForm1.movPosterClicked);
}
if(this.ParentForm != null)
{
this.ParentForm.Hide();
}