多个窗体如何在其加载事件上调用相同的方法
本文关键字:调用 方法 事件 加载 窗体 | 更新日期: 2023-09-27 18:04:15
在我的c#项目中有大约20个表单。我在类中创建了一个方法。我希望所有的20个表单调用该方法在他们的Load事件。我可以将Call语句一个接一个地放在每个表单的Load Event中。然而,未来的形式可能会增加。另外,也有可能某些表单在其Load事件中错误地编写Call语句。
他们是否有任何逻辑,特定的方法可以处理项目的所有形式的加载事件?我们可以使用System.Reflection获得项目的所有形式的列表。那么,是否有可能将所有这些表单的加载事件附加到类的相同特定方法?
您可以创建自定义表单并覆盖Onload
(或任何事件)
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace test
{
public class MyForm : Form
{
protected override void OnLoad(EventArgs e)
{
MessageBox.Show("test"); //call your method(s)
base.OnLoad(e);
}
}
}
和你的新表单
namespace CustomFormProject
{
public partial class Form1 : MyForm
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//MessageBox will be shown automatically from your base (MyForm) class
//other codes
}
}
}
你可以这样做:
public partial class Form2 : MainForm
public partial class Form3 : MainForm
...
...
...
public partial class Form19 : MainForm
public partial class Form20 : MainForm
继承其他窗体中的MainForm
,并在它们的Form_Load
事件中调用该方法
MainForm
是您在其中创建方法的类,并且您希望以其他形式访问它。
假设,下面的例子是MainForm
中的方法。
public partial class MainForm : Form
{
public Form1()
{
InitializeComponent();
}
public void Msg()
{
MessageBox.Show("Hello");
}
}
通过首先继承MainForm
类,在Form2_Load
事件上调用Msg()
方法:
public partial class Form2 : MainForm
^^^^^^^^
现在,调用这个方法:
private void Form2_Load(object sender, EventArgs e)
{
Msg();
}
类似地,对其余的表单做同样的事情。