解决表单加载事件

时间:2014-08-12 06:53:14

标签: c# combobox

有没有办法第一次避免使用form.activate或form.load?我在主窗体中有一个按钮,它打开一个新的表单,在其中我输入一个名称..这个名称是一个数据库。主窗体包含一个组合框,其中列出了添加到db的所有名称。现在..我需要在添加新名称时更新组合框数据。

由于FORM1是我的主要形式,我需要保持我的组合框更新...所以我已经调用了在init调用中更新cmbobox的方法..

但是当添加新名称时,这不会更新框。当我在formload事件中调用方法时,组合框显示重复的条目..

这是我的代码..

  private void listdata() 
    {
        SqlConnection a = new SqlConnection(str);
        a.Open();
        SqlCommand b = new SqlCommand();
        b.Connection = a;
        b.CommandType = CommandType.StoredProcedure;
        b.CommandText = "getname"; 
        SqlDataAdapter c = new SqlDataAdapter(b);
        DataTable d = new DataTable();
        c.Fill(d);

        foreach (DataRow m in d.Rows)
        {
            foreach (DataColumn n in d.Columns)
            {
                lst_name.Items.Add(m[n].ToString());
            }
        }

    }

这个im在主窗体的init中调用...当主窗体加载时我需要组合框中的数据..

然后点击添加按钮时

NewEntry x = new NewEntry();
        x.ShowDialog();

这个名为newentry的表单将数据添加到数据库中,该数据库用于填充主表单上的组合框。

现在我需要在主表单上更新组合框,以便在" newentry"表单关闭...(表示新数据输入到数据库中)

1 个答案:

答案 0 :(得分:0)

目前尚不清楚您所处的事件流程是什么 但是对你的双项问题的一个简单答案可能是一个简单的

    lst_name.Items.Clear();

在运行插入名称

的循环之前
    foreach (DataRow m in d.Rows)
    {
        foreach (DataColumn n in d.Columns)
        {
            lst_name.Items.Add(m[n].ToString());
        }
    }