Windows窗体仅在按下任何其他按钮时刷新(重新渲染)button.visible。[c#]

时间:2013-05-20 18:37:58

标签: c# forms button refresh main

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

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

然后我有另一个表单是配置页面。只需打开相同的数据文件,让用户更改内容并将其保存回来。然后关闭自己并运行Updater,它应该只使用新信息刷新Main表单。这是调用代码:

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

// ... this code is running in form Main ...
frmConfiguration config = new frmConfiguration();
config.ShowDialog(); // code here STOPS until "config" is closed
this.UpdaterCaller();