【问题标题】:How to call a function from another form如何从另一个表单调用函数
【发布时间】:2014-04-19 01:15:00
【问题描述】:

这可能是最常见的问题之一,有一个 FORM1 和 FORM2,我如何调用一个函数(在 FORM1 上),例如:来自 FORM2 的 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);
   }

}

请帮忙!

【问题讨论】:

  • 你尝试Show你的第二个表单了吗?因为我很确定你的第一次尝试应该会奏效。
  • 您遇到了什么错误?顺便说一句,像 MySQLConnect 这样的函数应该在实用程序类中,而不是在表单中。
  • 尝试从 MySQLConnect 中删除参数。即私有 void MySQLConnect() { ... }.

标签: c# winforms methods


【解决方案1】:

如果您传递 MySqlConnect 预期的参数,您的第一个示例将有效。

public partial class Form2 : Form
{
   Form1 mainForm;

   public Form2(Form1 mainForm)
   {
       InitializeComponent();

       this.mainForm = mainForm;
       mainForm.MySQLConnect(this, new EventArgs());
   }
}

但是,我无法想象一个名为 MySqlConnect 的函数可以对传递的参数做什么。
所以最好在方法定义中去掉,调用的时候不要传任何东西。

我同意上面的 cmets。为什么要在 Form 实例中隐藏如此重要(通常是必需的功能)?您必须在需要连接到数据库的任何地方传递此表单实例。最好准备一些静态服务类(在数据库访问层中)来进行这项工作

【讨论】:

    【解决方案2】:
    mainForm.MySQLConnect();
    public void MySQLConnect(object sender, EventArgs e)
    

    有什么想法吗?你只是省略了参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-09
      • 2021-07-03
      • 2015-07-03
      • 2020-11-17
      • 2019-10-02
      • 1970-01-01
      相关资源
      最近更新 更多