我希望标题足够清晰。让我解释一下:我正在做一个c#Winform App。当我启动应用程序时,我启动了表单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中的函数(例如在加载事件期间)?
答案 0 :(得分:0)
在调用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();
}
答案 1 :(得分:0)
如果您单击Form1上的按钮,则启动并打开表单2,3,4等,并在那些btn_click
处理程序中创建new
表单2,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,3,4等实例,那么您需要某种形式的Constructor或属性注入来提供实例引用。