在我的C#winform项目中,我使用了几个用户控件。 这里包含两个选项,如
Home > Person > Addperson
Home > Teacher > AddTeacher
人员和教师包含一个列表框,显示数据库中的所有人/教师。 当我使用添加人员添加人员时,数据输入成功。但是当我回到人时它没有显示任何内容。同时如果我回到家并进入 AddTeacher 选项,从下拉列表中我可以找到新添加的数据。
现在,如果我将该人员添加为教师并返回教师,则除了成功插入数据外,它不会显示任何内容。然后,如果我关闭整个程序并重新打开,则所有内容都显示正确。
我想要的只是以某种方式刷新那些 usercontrol ,这样每次发生任何变化时,它都会立即显示变化而不关闭整个程序。
我尝试了不同的方法,但没有一种方法可行。我试过刷新方法。也试过了
在实际数据源声明之前使用datasource=null
。
人员列表框代码:
var personListDictionary = new Dictionary<int, string>();
SqlCommand prsonListCmd = new SqlCommand("SQL QUERY", Connection);
SqlDataReader dr = prsonListCmd.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
...
personListDictionary.Add(Key, Value);
}
}
PersonList.DisplayMember = "Value";
PersonList.ValueMember = "Key";
PersonList.DataSource = new BindingSource(personListDictionary, null);
答案 0 :(得分:0)
如果我正确理解您的示例,那么您有一个Windows窗体,其中包含Person和AddPerson用户控件。解决这个问题的一个选择是:
AddPerson用户控件:
public event EventHandler<object, EventArgs> OnPersonAdded;
// When you add a Person, then raise the event:
var handler = OnPersonAdded;
if (handler != null)
{
OnPersonAdded(this, EventArgs.Empty);
}
个人用户控制:
public void Refresh()
{
// your code from the example
}
父窗体:
addPersonUserControl.OnPersonAdded += (sender, e) => personUserControl.Refresh();