如何刷新按钮单击另一个表单上的按钮

时间:2013-05-10 05:24:13

标签: c# winforms

我有一个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应该刷新。我怎样才能做到这一点。我不知道从哪里开始。

3 个答案:

答案 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);