使用表单2从表单1运行Void

本文关键字:表单 运行 Void | 更新日期: 2023-09-27 18:11:21

我正在尝试从Form2执行Void并更新Form1,我已经尝试在按钮单击、Form_Close、Form1_Activated、Form1_Enter上添加它,但仍然没有进展

以下是我尝试过的:(但没有成功…

Form1.cs

public void LoadTable()
{
   //Code to Populate Datagridview
   string sql = "";
   SqlConnection Connection = new SqlConnection(Global.Connection);
   SqlCommand CMD = new SqlCommand(sql, Connection);
   SqlDataAdapter DA = new SqlDataAdapter();
   DA.SelectCommand = CMD;
   DataSet DS = new DataSet();
   DA.Fill(DS);
   ApplicantsGrid.DataSource = DS.Tables[0].DefaultView;
}
private void Form1Button_Click(object sender, EventArgs e)
{
    Form2 Form2 = new Form2();
    Form2.showDialog();
}

Form2.cs

private void Form2Button_Click(object sender, EventArgs e)
{
      Form1 Form1 = new Form1();
      Form1.LoadTable();
}

这是iam制作程序的主要问题:(

使用表单2从表单1运行Void

我敢肯定,你在做你想做的其他事情。

您正在Form1的新实例上调用LoadTable。你可能想要的是按照Sayse的建议,在现有的形式上调用它。

您可能想在现有实例上调用它。你可以这样实现,例如:

Form1按钮_点击代码:

class Form1
{
    public static Form1 Instance {get; private set;}
    public Form1()
    {
        Instance = this;
        //InitializeComponents and what ever else.
    }
    public void LoadTable()
    {
        //implementation
    }
}

Form2代码:

private void Button_Click(object sender, EventArgs e)
{
    if (Form1.Instance != null) //must be careful about this.
    {
        Form1.Instance.LoadTable(); //like this you will call the method on the existing instance of the form.
    }
}
 public partial class Form1 : Form
    {
        internal static Form1 ViewForm1; // Make other form run Public void from Form1
        public form1()
        {
            InitializeComponent();
            ViewForm1 = this;  //Add this
        }
        public void DoSomething()
        {
          //Code here...
        }
}   

 public partial class Form1 : Form
    {
        public form2()
        {
            InitializeComponent();            
            Form1.ViewForm1.ShowData(); // Call public void from form1
        }
    }

     public partial class Form1 : Form
        {
            internal static Form1 ViewForm1; // Make other form run Public void from Form1
            public form1()
            {
                InitializeComponent();
                ViewForm1 = this;  //Add this
            }
            public void DoSomething()
            {
              //Code here...
            }
    }	
	
     public partial class Form1 : Form
        {
            public form2()
            {
                InitializeComponent();            
                Form1.ViewForm1.ShowData(); // Call public void from form1
            }
		}