【问题标题】:Why does OnShow for main form not fire?为什么主窗体的 OnShow 不触发?
【发布时间】:2013-03-15 20:37:27
【问题描述】:

我在一个主窗体的OnShow 事件中有一些东西,它用一个过程StuffLB 填充了几个列表框。在显示我的任何其他表单并调用 ShowModal 后,我需要重新填充这些列表框。

在这样的模态窗体关闭后,主窗体只是在模态窗体所在的位置重新绘制,其OnShow 事件不会触发。

我可以触发OnShow 事件的唯一方法是:

frmM.Hide;
frmB.ShowModal;
frmM.Show;

在每个ShowModal 子表单调用之后,我可以填充列表框以使用StuffLB 调用,这是唯一的方法吗?我有大约 25 种可用的表格。

我希望 OnShow 意味着当它再次显示时,无论是部分还是全部。

如果有任何帮助或建议,我将不胜感激。

【问题讨论】:

  • 你的主窗体在模态窗体后面清晰可见。 OnShow 当表单从隐藏变为可见时触发。

标签: winforms delphi events


【解决方案1】:

OnShow 事件在表单变得可见时触发。您可以使用OnActivate 事件。但是,由于是您的代码调用了另一种形式的ShowModal,因此只需将所需的代码放在单独的方法中,然后在此处和FormShow 中调用。

【讨论】:

  • OnActivate 在关闭模态表单后不会触发。不过,将FormShow 的相关部分放在一个单独的方法中并在ShowModal 之后调用它是个好主意。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-22
  • 2019-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-27
相关资源
最近更新 更多