c# - 在单独的窗体上刷新对象

标签 c# .net oop

我有一个显示 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/

相关文章:

c# - 在 C# 中,我应该重用函数/属性参数来计算更清晰的临时值还是创建临时变量?

c# - 为什么某些 float 在 C# 中可以准确表示?

c# - 调用 List<T>.Clear() 导致 IndexOutOfRangeException

oop - 闭包:为什么它们如此有用?

c# - 沙发底座上的 session 状态

c# - 如何使 C# 类的 Object 属性可选?

c# - 解码这种路径url?

c++ - 在C++中是否可以有虚拟类型?

javascript - 使用 javascript 更改 JSON 结构

c# - 将单位转换为颜色