【问题标题】:How to close a MdiChild Form right after opening it?如何在打开 MdiChild 表单后立即关闭它?
【发布时间】:2019-04-22 06:21:22
【问题描述】:

我们可以通过 Me.close() 关闭一个 Mdiform,它写在一个控件中,比如 Button 的事件。
我们可以在打开表单后立即关闭它吗?

根据我在打开表单后所知道的,指针指向 Form.Load 事件。
我尝试在 Form.Load 和 Form.Activated 中编写 Me.close 但

我收到描述我的错误。在 CreateHandler() 时关闭不起作用 事件。

我这样做是因为我创建了类似的东西,如果说公共变量 bool as Boolean = false 那么表单将无法打开。
我可以在 mdi 父级中初始化表单之前将其放入,它对我有用,但可以从许多不同的点初始化表单。就像来自 MdiParent 和另一个 MdiChild 一样,我必须将if bool = false then exit sub 放在任何地方。如果我可以把它放在表格中,那么我可以节省一些 LOC。
提前致谢

【问题讨论】:

  • 试着把它放在Form_Shown事件下。
  • 这样的错误通常是由于构造函数中的代码没有完成。检查构造函数。您可能需要将一些构造函数代码移至 Load() 事件。
  • @jdweng 我不会更改构造函数。我想要简单的方法,并且用 form_shown 写确实有效。
  • @preciousbetine Form_Shown 工作,但它打开表单然后显示消息。有没有办法先不显示???不过,这也对我有用。
  • 你说的有什么办法不先显示表格吗?

标签: c# vb.net winforms


【解决方案1】:

您应该在实际显示表单之前很久就检查是否创建和显示表单。在实例化表单的代码中,检查是否应该创建表单。您不想在已经显示表单后检查是否在表单本身中显示它。

例如,这个(伪代码)可能在您的 MDI 父表单中:

Private Sub ShowMdiChildForm(etc etc)

' Variable "x" is your Boolean to determine whether or not to show the form.
If x = True Then
    Dim f as new MdiChildForm
    f.Show
End If

End Sub

【讨论】:

  • 我以前做过。但是考虑到这个表格是从一个项目的 20 个位置开始的。所以我必须在所有 20 个位置上写成 if x = true then etc etc。所以我想要一种简单的方式来写表格,它会检查它什么时候打开。你的回答对我来说不可行。
  • 我发现在 form_shown 事件中写作是一种方便的方式。
  • i did this before. but... HardCode 的示例是您可以调用的子程序,它已经处理了 if x = true ,因此您应该能够调用 ShowMdiChildForm 20 次。对我来说,这比实例化一个新表单并显示 20 次要少。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-14
  • 1970-01-01
  • 2020-05-23
  • 2017-08-20
  • 2017-11-21
  • 2014-11-23
  • 2018-05-02
相关资源
最近更新 更多