如何刷新下拉按钮,单击另一个表单

本文关键字:按钮 单击 另一个 表单 何刷新 刷新 | 更新日期: 2023-09-27 18:12:53

我有一个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。在点击此按钮事件时,我正在使用ShowDialog()函数打开一个新的winform,例如winForm2。

在WinForm2我有一个按钮btn2插入一些值在sql。我想在sql中插入值后,winForm1上的组合框应该刷新。我怎么能这么做呢?我不知道从哪里开始。

如何刷新下拉按钮,单击另一个表单

如果您想从form2更新每个form1,更好的选择是拥有事件处理程序。

<

Form2代码/strong>

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
}

简单的方法是提取ComboBox更新到方法的代码,从Form_Load event调用它,后来由于您使用Form.ShowDialog,您可以再次调用该方法从数据库获取最新记录并再次绑定ComboBox。比如:

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;
}

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

在主表单中创建一个委托:

public delegate void ComboDelegate();//namespace level
public void RefreshCombo(string itemToAdd){
   //do your add item here
}

then在你的Dialog Form类中:

public ComboDelegate cd;

创建对话框,cd设置为RefreshCombo:

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

然后在你的按钮点击简单呼叫:

cd(itemToUpdate);