如何从另一个窗体调用函数
本文关键字:调用 函数 窗体 另一个 | 更新日期: 2023-09-27 17:50:05
这可能是最常见的问题之一,有了FORM1和FORM2,我如何从FORM2调用函数(在FORM1上(,比如:MySQLConnect。我尝试了几个选项,但我无法让它发挥作用,在第二次尝试中,我尝试通过按钮调用该函数,但没有成功。
Form1.cs(我的第一次尝试:(
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Form2 form2 = new Form2(this);
}
public void MySQLConnect(object sender, EventArgs e)
{
// Starting a MySQL connection
}
}
Form2.cs(我的第一次尝试:(
public partial class Form2 : Form
{
Form1 mainForm;
public Form2(Form1 mainForm)
{
InitializeComponent();
this.mainForm = mainForm;
// call function on form1 MySQLConnect()
mainForm.MySQLConnect();
}
}
Form1.cs(我的第二次尝试:(
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void MySQLConnect(object sender, EventArgs e)
{
// Starting a MySQL connection
}
}
Form2.cs(我的第二次尝试:(
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void btnMySQLConnect(object sender, EventArgs e)
{
Form1 myForm1 = new Form1();
myForm1.MySQLConnect(sender, e);
}
}
请帮忙!
如果您传递MySqlConnect所需的参数,那么您的第一个示例就可以工作。
public partial class Form2 : Form
{
Form1 mainForm;
public Form2(Form1 mainForm)
{
InitializeComponent();
this.mainForm = mainForm;
mainForm.MySQLConnect(this, new EventArgs());
}
}
然而,我无法想象一个名为MySqlConnect的函数能用传递的参数做什么
因此,最好在方法定义中删除它们,并且在调用它时不要传递任何信息
我同意上述意见。为什么要在Form实例中隐藏如此重要(通常是必需的功能(?您必须将此表单实例传递到需要连接到数据库的任何位置。最好准备一些静态服务类(在数据库访问层中(来执行此任务
mainForm.MySQLConnect();
public void MySQLConnect(object sender, EventArgs e)
有什么想法吗?你只是忽略了论点。