0

我有一个名为“Main”的主窗体,它根据启用的按钮动态调整自身大小。在 Main 内部,我还有一个名为 Updater 的函数。更新程序将文件中的所有信息重新加载到内存中,进行一点处理,然后“应该”刷新窗口。这是令人耳目一新的部分:

Application.DoEvents();
this.Refresh();

然后我有另一种形式,即配置页面。只需打开相同的数据文件,让用户更改内容并将其保存回来。然后它会自行关闭并运行更新程序,更新程序应该只是用新信息刷新主窗体。这是调用代码:

Main main = new Main(); 
main.UpdaterCaller();

现在了解新信息是启用和禁用按钮以及定位它们。我知道这一切都在我运行它时起作用,我放了一段控制台代码,让我知道它已经运行过了。但是当我关闭配置窗口时,控制台会显示 Updater() 中写入的消息,但不会显示 Main 上的更改。只有当我单击任何其他消息时,才会立即使用新按钮刷新。

抱歉,如果我不够具体或没有使用正确的术语。谢谢您的帮助!

4

1 回答 1

1

您的问题是配置页面正在创建 Main 的新实例并对其进行更新。这个实例实际上是不可见的,因为它从未显示过。

我只需通过 ShowDialog() 显示配置页面,然后在 Main 关闭后自行更新:

// ... this code is running in form Main ...
frmConfiguration config = new frmConfiguration();
config.ShowDialog(); // code here STOPS until "config" is closed
this.UpdaterCaller();
于 2013-05-20T18:44:21.947 回答