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

在 WinForm2 上,我有一个按钮 btn2,它在 sql 中插入一些值。我想在 sql 中插入值后,winForm1 上的 Combobox 应该刷新。我怎样才能做到这一点。我不知道从哪里开始。

4

3 回答 3

2

如果您想form1form2更好的选择中更新每一个,则具有事件处理程序。

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
}
于 2013-05-10T05:53:11.493 回答
1

最简单的方法是将 ComboBox 更新的代码提取到一个方法中,调用它 from 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;
}
于 2013-05-10T05:30:01.263 回答
1

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

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

public delegate void ComboDelegate();//namespace level

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

然后在您的对话框表单类中:

public ComboDelegate cd;

使用 cd 设置为 RefreshCombo 创建您的对话框表单:

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

然后在您的按钮单击只需调用:

cd(itemToUpdate);
于 2013-05-10T05:52:36.460 回答