有没有办法第一次避免使用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"表单关闭...(表示新数据输入到数据库中)
答案 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());
}
}