我的C#项目中有大约20个表单。我在Class中创建了一个方法。我希望所有20个表单在其Load事件中调用该方法。我可以将Call语句逐个放入每个表单的Load Event中。但是,将来表格可能会增加。此外,可能会错过某种形式错误地在其Load事件中写入Call语句。
他们是否有任何逻辑,特定方法可以处理项目所有形式的加载事件?我们可以使用System.Reflection获取项目的所有形式的列表。那么,是否可以将所有这些表单的加载事件附加到类的相同特定方法中?
答案 0 :(得分:2)
您可以创建自定义表单并覆盖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
}
}
}
答案 1 :(得分:0)
您可以这样做:
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");
}
}
首先从Msg()
类继承,在Form2_Load
事件上调用方法MainForm
:
public partial class Form2 : MainForm
^^^^^^^^
现在,请调用此方法:
private void Form2_Load(object sender, EventArgs e)
{
Msg();
}
同样,您对其余的 Forms 执行相同的操作。