【问题标题】:Windows Form only refreshes(rerenders) button.visible when any other button is pressed.[c#]Windows 窗体仅刷新(重新渲染)按钮。按下任何其他按钮时可见。[c#]
【发布时间】:2013-05-15 09:34:12
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 您发布的代码不足以让我们对您有任何真正的帮助。

标签: c# forms button refresh main


【解决方案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();

【讨论】:

    猜你喜欢
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    相关资源
    最近更新 更多