C# 从第一个窗体调用另一个窗体函数

C# 从第一个窗体调用另一个窗体函数,c#,forms,winforms,C#,Forms,Winforms,我希望标题足够清楚。让我解释一下:我正在做一个c#Winform应用程序。当我启动应用程序时,我有我的表单1,它会启动,我还有其他表单可以通过单击按钮从中打开 问题是,我有那些形式的函数(表格2、表格3、表格4..),我想从表格1开始 这是我的代码 public partial class Form1 : Form { public Form1() { InitializeComponent(); } // First Event, when

我希望标题足够清楚。让我解释一下:我正在做一个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中有组件(文本框、按钮、函数等)


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

在调用show之前,将
Form2
或任何其他对象/变量的值分配给Ling3对象。调用
send\u email()
之前,在
send\u 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();
    }

如果您正在单击表单1上的按钮,以启动并打开表单2、3、4等,并在这些
btn\u中单击
处理程序,则您正在创建一个
新的
表单2、3、4。然后您将有一个对每个表单的引用,因此可以在刚刚创建的实例上调用相应的public方法。乙二醇

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、3、4等的实例,则需要某种形式的构造函数或属性注入来提供实例引用

var ligne3=新ligne3();ligne3.send_email()?@mybirthname此解决方案不采用为邮件设置设置的参数,例如在表单2中。。它在调试过程中抛出错误,因此预设此设置或将其作为依赖项添加到方法签名中。@mybirthname是的,但我有来自App.config文件的设置,这不仅是变量更改方法签名或从methodOk中的App config获取设置,而且是如何“知道”文本框的存在,以及表格2(直线3)至表格1的其他视觉组件?我已经分配了所有变量,但Form1无法识别Form2中的文本框
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();
   }
}