我有Form1,其中包含一个组合框,显示一些保存在数据库中的数字,它还包含一个按钮(butn2
),点击弹出另一个表单和另一个按钮(butn1
)更新来自数据库的组合。
在这个窗体上(Form2,某种形式的子窗体)我尝试通过创建Form1
的对象
但是当我打开并看到组合框时,它仍然显示相同的数据(它没有更新)。
是否可以将组合框中的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的这个组合框?
答案 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
显示form2public 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);