我对Windows表单很新。我想知道是否可以通过单击表单2中的按钮来激活表单1中的方法? 我的表单1有一个组合框。我的表单2有一个“保存”按钮。我想要实现的是: 当用户单击表单2中的“保存”时,我需要检查表单1是否已打开。如果它是打开的,我想获取实例并调用将在表单1上重新填充组合的方法。
如果我能得到一些关于如何解决这个问题的建议,我将非常感激。如果还有其他更好的方式,请告诉我。
谢谢:)
加了: 表单1和表单2彼此独立,并且可以由用户以任何顺序打开。
答案 0 :(得分:2)
您可以通过Application.OpenForms属性获取应用中所有当前打开的表单的列表。您可以遍历该列表以查找Form1。请注意(理论上)可以有多个Form1实例(如果您的应用程序可以创建多个实例)。
样品:
foreach (Form form in Application.OpenForms)
{
if (form.GetType() == typeof(Form1))
{
((Form1)form).Close();
}
}
此代码将在Form1的所有打开实例上调用YourMethod
。
(编辑代码示例为2.0兼容)
答案 1 :(得分:0)
当然这是可能的,你需要的只是对Form1的引用和该类的公共方法。
我的建议是在Form2的构造函数中传递Form1引用。
答案 2 :(得分:0)
您可以做的是在另一个类中创建静态事件,然后获取表单1以订阅该事件。然后,当在表单2中单击按钮时,然后提升表单1的事件以便接收。
如果您愿意,可以在表单1中声明事件。
public class Form1 : Form
{
public static event EventHandler MyEvent;
public Form1()
{
Form1.MyEvent += new EventHandler(MyEventMethod);
}
private void MyEventMethod(object sender, EventArgs e)
{
//do something here
}
public static void OnMyEvent(Form frm)
{
if (MyEvent != null)
MyEvent(frm, new EventArgs());
}
}
public class Form2 : Form
{
private void SaveButton(object sender, EventArgs e)
{
Form1.OnMyEvent(this);
}
}