C# 从第一个窗体调用另一个窗体函数
我希望标题足够清楚。让我解释一下:我正在做一个c#Winform应用程序。当我启动应用程序时,我有我的表单1,它会启动,我还有其他表单可以通过单击按钮从中打开 问题是,我有那些形式的函数(表格2、表格3、表格4..),我想从表格1开始 这是我的代码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
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();
}
}