2013-05-10 91 views
0

我有一个winform说winForm1有组合框。我在Form_Load这样的事件上绑定这个组合框这样的如何刷新下拉按钮点击另一个表格

SqlCommand cmd = new SqlCommand("SELECT DISTINCT(TXT_TARGET_NUMBER) FROM TBL_CDR_ANALYZER", sqlCon); 
cboTargetNo.Properties.Items.Clear(); 
cboTargetNo.Properties.Items.Add("Choose Target Number"); 
sqlCon.Open(); 
SqlDataReader dr = cmd.ExecuteReader(); 
while (dr.Read()) 
{ 
    cboTargetNo.Properties.Items.Add(dr["TXT_TARGET_NUMBER"]); 
} 
sqlCon.Close(); 
cboTargetNo.SelectedIndex = 0; 

现在这个表单还包含一个按钮说btn1。点击这个按钮的事件我打开一个新的winform说winForm2使用ShowDialog()函数。

在WinForm2上,我有一个按钮btn2,它在sql中插入一些值。我想要在sql中插入值后,winForm1上的Combobox应该刷新。我怎样才能做到这一点。我无能为力。

回答

1

Simplist方式是为组合框更新的代码提取到一个方法,从Form_Load event调用它,后来因为您使用Form.ShowDialog,你可以再次调用方法来从数据库中获取的最新记录并绑定CombobBox再次。喜欢的东西:

WinForm2 frm2 = new WinForm2(); 
frm2.ShowDialog(); 
RefreshCombo(); 

RefreshCombo是一个方法:

private void RefreshCombo() 
{ 
SqlCommand cmd = new SqlCommand("SELECT DISTINCT(TXT_TARGET_NUMBER) FROM TBL_CDR_ANALYZER", sqlCon); 
cboTargetNo.Properties.Items.Clear(); 
cboTargetNo.Properties.Items.Add("Choose Target Number"); 
sqlCon.Open(); 
SqlDataReader dr = cmd.ExecuteReader(); 
while (dr.Read()) 
{ 
    cboTargetNo.Properties.Items.Add(dr["TXT_TARGET_NUMBER"]); 
} 
sqlCon.Close(); 
cboTargetNo.SelectedIndex = 0; 
} 
+0

威尔RefreshCombo()函数将调用上winform2按钮点击?我有疑问! – 2013-05-10 05:31:55

+0

那么它的工作..谢谢哈比卜。我没有想到这样... – 2013-05-10 05:42:19

+0

@RajeevKumar,你是欢迎:) – Habib 2013-05-10 05:50:15

1

如果你想即时更新,你可以创建一个委托击中按钮后,从你的对话框刷新组合。

在主窗体创建一个委托:

public delegate void ComboDelegate();//namespace level 

public void RefreshCombo(string itemToAdd){ 
    //do your add item here 
} 

然后在对话框Form类:

winForm2 = new Winform(){ cd = RefreshCombo); 

public ComboDelegate cd; 

与CD设置为RefreshCombo创建对话框表

然后在您的按钮上点击只需致电:

cd(itemToUpdate); 
+0

1+为解决方案使用'委托' – Damith 2013-05-10 06:06:09

2

如果你想更新每个form1form2更好的选择是有事件处理程序。

窗体2码

​​

Form1的代码

public Form1() 
{ 
    InitializeComponent(); 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    Form2 f2 = new Form2(); 
    f2.myEvent += new EventHandler(f2_myEvent); 
    f2.ShowDialog(); 
} 

void f2_myEvent(object sender, EventArgs e) 
{ 
    //Refresh your ddl 
} 
+0

确切地说,添加信息使用事件或代表对话框形式是一个更好的选择,而不是刷新关闭对话框后,从某个数据库中组合。 – 2013-05-10 06:10:29