多个表单如何在其加载事件上调用相同的方法

时间:2016-08-27 21:14:32

标签: c# forms

我的C#项目中有大约20个表单。我在Class中创建了一个方法。我希望所有20个表单在其Load事件中调用该方法。我可以将Call语句逐个放入每个表单的Load Event中。但是,将来表格可能会增加。此外,可能会错过某种形式错误地在其Load事件中写入Call语句。

他们是否有任何逻辑,特定方法可以处理项目所有形式的加载事件?我们可以使用System.Reflection获取项目的所有形式的列表。那么,是否可以将所有这些表单的加载事件附加到类的相同特定方法中?

2 个答案:

答案 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 执行相同的操作。