如何将UI从一种形式更新为另一种形式

时间:2015-12-03 07:47:09

标签: c# forms winforms button combobox

我有Form1,其中包含一个组合框,显示一些保存在数据库中的数字,它还包含一个按钮(butn2),点击弹出另一个表单和另一个按钮(butn1)更新来自数据库的组合。 在这个窗体上(Form2,某种形式的子窗体)我尝试通过创建Form1的对象

来更新按钮单击时前一个窗体(父窗口1)组合框的数据

但是当我打开并看到组合框时,它仍然显示相同的数据(它没有更新)。

是否可以将组合框中的UI从一种形式更新到另一种形式?我的代码是

Form1代码:

public Form1()
{
  InitializeComponent(); 
}

Form1.Designer.cs:

Button butn1;
Button butn2;
ComboBox cmb1;
private void InitializeComponent()
 {
  cmb1 = new ComboBox();
  butn1 = new Button();
 }
this.butn1.Click += new System.EventHandler(this.button_Save_Click);
this.butn2.Click += new System.EventHandler(this.button_Save_Click2);

public void button_Save_Click(object sender, System.EventArgs e)
{
  UpdateComboBoxFromMySQL.InsertdataInCombo(this.cmb1 ); //Here i add data in combox through database, the code is correct i verfied it
}
public void button_Save_Click2(object sender, System.EventArgs e)
 {
    Form2 frm2 = new Form2();
    frm2.show();
 }

Form2代码:

Button butn2 = new Button();
//first i add some data to database, which are added i have seen the table-columns by opening DB. Now i want to update the Combobox from that data
Form1 obj1 = new Form();
this.butn2.Click += new System.EventHandler(obj1 .button_Save_Click); //It calls the function button_Save_Click, i saw on debugging but still it do not update the data.

如何从Form2按钮单击更新Form1的这个组合框?

2 个答案:

答案 0 :(得分:1)

我们假设您的第一个Form的名字是Foobar。在这种情况下,而不是

Form1 obj1 = new Form();
this.butn2.Click += new System.EventHandler(obj1 .button_Save_Click);

创建一个新的Form对象,你需要这个:

Form obj1 = null;
for (int i = ((obj1 == null) && (Application.OpenForms.Count - 1)); i >= 0; i--)
{
    if (Application.OpenForms[i].Name == "Foobar")
        obj1 = Application.OpenForms[i];
}
if (obj1 != null)
{
    this.butn2.Click += new System.EventHandler(obj1 .button_Save_Click);
}

说明:obj1已初始化为null。创建一个循环以查找要查找的Form,结束符号要么已完成迭代,要么找到Form。如果找到Form,则初始化obj1。在周期之后,如果obj1已初始化,那么您可以使用它,其成员和方法,包括但不限于button_Save_Click

答案 1 :(得分:1)

您还可以使用父form1

显示form2
public void button_Save_Click2(object sender, System.EventArgs e)
 {
    Form2 frm2 = new Form2();
    frm2.Show(this);
 }

然后,您可以通过form2。{/ p>的Owner属性访问form1

this.butn2.Click += new System.EventHandler(Owner.button_Save_Click);