我有一个显示 MySQL 表中数据的应用程序。基本上,我的应用程序由两种形式组成:主形式和用于向数据库添加内容的形式。
主窗体显示了数据库中的所有条目和相关信息。当用户想要向数据库添加新条目时,会打开一个辅助表单,提示输入信息。信息填写完毕后,用户按下提交按钮,表单关闭。我的问题是,当辅助窗体关闭时,主窗体中的 listBox
不会更新以反射(reflect)新添加的条目。
这是当用户提交辅助表单时执行的代码:
private void closeWindow() { mainForm parent = new mainForm(); parent.listParts.Refresh(); this.Close(); }
是不是我调用listBox
刷新的时候,没有显示我新增的信息?也许我以错误的顺序调用某些东西?或者 Refresh()
方法甚至不能那样工作?
任何帮助将不胜感激!或者,如果您知道更好的方法来做到这一点,我很乐意听到!
最佳答案
问题是您正在刷新错误的表单:
private void closeWindow()
{
mainForm parent = new mainForm();
parent.listParts.Refresh();
this.Close();
}
由于您使用了:new mainForm()
,您分配了一个完全独立的“mainForm”实例,并刷新了它的内容。这不会影响现有的、打开的表单。
我建议将对 mainForm
的引用传递给辅助表单的构造函数。然后它会知道 需要使用哪个 mainForm 实例 来调用 Refresh()
。
关于c# - 在单独的窗体上刷新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10047107/