从第一个表单调用另一个表单函数

本文关键字:表单 函数 另一个 调用 第一个 | 更新日期: 2023-09-27 18:15:20

我希望标题足够清楚。让我解释一下:我正在做一个c# Winform应用程序。当我启动应用程序时,我有我的表单1启动,我有其他的表单,我可以通过点击按钮从它打开。

问题是,我在这些表格(表格2,表格3,表格4..)中有函数,我想从表格1开始。

目前这是我的代码

 public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
     // First Event, when I click in the toolstrip menu, I open the Form2 ("Ligne3")
    private void ligne3ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        var Ligne3 = new Ligne3();
        Ligne3.Show();
    }
然后,我在Form2中有组件(文本框,按钮,函数等)
public partial class Ligne3 : Form
{
    public Ligne3()
    {
        InitializeComponent();
    }
    private void Ligne3_Load(object sender, EventArgs e)
    {
        //Some code
    }
    }
    //Function I want to call from the Form1
    public void send_email()
    {
     //Some code
    }

如何启动send_email()函数从Form1(例如在加载事件期间)?

从第一个表单调用另一个表单函数

在调用show之前将Form2或任何其他对象/变量的值赋给Linge3对象。在调用send_email()之前,send_email()中需要分配的值。如下所示

private void ligne3ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        var ligne3 = new Ligne3();
        //define variables/properties in Ligne3 for all values to be passed
        //then assign them with corresponding values
        ligne3.Value1 = objForm2.Value1; 
        ligne3.Value2 = objForm2.Value2; 
        ligne3.Value3 = objForm2.textBox1.Text;
        ligne3.Value3 = objForm2.checkBox1.Value;
        //and so on
        ligne3.send_email();
        ligne3.Show();
    }

如果您正在单击Form1上的按钮,以启动和打开表单2,3,4等,并且在这些btn_click处理程序中,您正在创建new form2,3,3,4。然后,您将拥有对每个表单的引用,因此可以在刚刚创建的实例上调用各自的公共方法。如

public class Form1
{
    private Form2 subForm2;
   private void OpenForm2_Click(object sender, eventargs e)
   {
       subForm2 = new Form2();
       subForm2.Show()
   }
   private void sendEmailBtn_Click(object sender, EventArgs e)
   {
        subForm2.Send_email();
   }
}

从设计的角度来看,上面有很多错误,但我只是用它来表达这个想法。如果你在Form1的实例化之外创建Form2、form3、form4等的实例,那么你需要某种形式的构造函数或属性注入来提供实例引用。