这可能是最常见的问题之一,有一个FORM1和FORM2,我如何调用一个函数(在FORM1上),如: MySQLConnect 来自FORM2 。我尝试了几个选项,我无法让它工作,在第二次尝试中,我尝试从按钮调用该功能,但没有运气。
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);
}
}
请帮忙!
答案 0 :(得分:3)
如果传递MySqlConnect预期的参数,则第一个示例有效。
public partial class Form2 : Form
{
Form1 mainForm;
public Form2(Form1 mainForm)
{
InitializeComponent();
this.mainForm = mainForm;
mainForm.MySQLConnect(this, new EventArgs());
}
}
但是,我无法想象名为MySqlConnect的函数可以对传递的参数做什么 因此最好在方法定义中删除它们,并在调用它时不要传递任何内容。
我同意上述评论。为什么要在Form实例中隐藏这些重要的(通常需要的功能)?您必须在需要连接到数据库的任何位置传递此表单实例。最好准备一些执行此工作的静态服务类(在数据库访问层中)
答案 1 :(得分:0)
mainForm.MySQLConnect();
public void MySQLConnect(object sender, EventArgs e)
有什么想法吗?你刚才省略了参数。