我有一个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的按钮。在此按钮的Click事件中,我正在使用ShowDialog()函数打开一个新的winform,表示winForm2。
在WinForm2上我有一个按钮btn2,它在sql中插入一些值。我希望在sql中插入值后,winForm1上的Combobox应该刷新。我怎样才能做到这一点。我不知道从哪里开始。
答案 0 :(得分:2)
如果要从form1
更新每个form2
,更好的选择是使用事件处理程序。
Form2代码
public event EventHandler myEvent;
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// update data here
// inform form 2 about data added
if (myEvent != null)
{
myEvent(this,e);
}
}
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
}
答案 1 :(得分:1)
Simplist方法是将ComboBox更新的代码提取到一个方法,从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;
}
答案 2 :(得分:1)
如果您想立即更新,可以在按下按钮后创建一个委托以从对话框中刷新Combo。
在主表单中创建一个委托:
public delegate void ComboDelegate();//namespace level
public void RefreshCombo(string itemToAdd){
//do your add item here
}
然后在您的Dialog Form类中:
public ComboDelegate cd;
使用cd设置为RefreshCombo创建对话框表单:
winForm2 = new Winform(){ cd = RefreshCombo );
然后按下按钮点击只需致电:
cd(itemToUpdate);