【问题标题】:Is there a .Net form container? [duplicate]是否有 .Net 表单容器? [复制]
【发布时间】:2013-01-02 23:47:02
【问题描述】:

可能重复:
Creating Wizards for Windows Forms in C#

我是开发 VB .Net 表单的新手,目前我有一个“向导”,我只是将它设置为不同的表单,但问题是当更改表单时,Windows 会执行完整的动画和窗口位置可以换。这在用户端并不是那么好。

我见过的另一种选择是手动隐藏/显示所有元素,但这很混乱且难以维护。

那么是否有一个父容器,您可以在其中指定单独的表单,所以所有表单逻辑仍然在单独的文件中,但它是通过一个表单访问的(从用户的角度来看)?

注意:我目前正在使用 .Show 和 .Hide 在表单之间切换。

使用常规 Windows 窗体,.net 2.0

【问题讨论】:

  • 我假设您使用的是 Windows 窗体。如果您要告诉我们您使用的是 winforms 还是 WPF 或其他什么,那么我不必假设。

标签: .net vb.net winforms


【解决方案1】:

您应该考虑将控件放在一个或多个UserControls 中。这使您可以像表单一样设计和使用它,但可以作为一个“控件”工作,您可以根据需要显示或隐藏它。

有关详细信息,请参阅 MSDN 上的 Developing Custom Windows Forms Controls with the .NET Framework

【讨论】:

  • 有趣又聪明的一个o.O
【解决方案2】:

您可以使用一些技巧将表单加载到面板中。我将面板添加到主窗体,然后将要显示的新窗体变暗,然后将其添加到面板中。想要显示另一个表单,清除面板并加载一个新表单。这是我用来将表单加载到面板中的代码:

Dim formToShow As New Form2
formToShow.TopLevel = False
formToShow.WindowState = FormWindowState.Maximized
formToShow.FormBorderStyle = Windows.Forms.FormBorderStyle.None
formToShow.Visible = True
Panel1.Controls.Add(formToShow)

【讨论】:

  • 是否有将键盘事件转发到内部表单的方法?例如,选项卡不起作用,只能标记容器表单。
  • 老实说,我不知道,以前没有遇到过,我破坏了我写的代码。今天晚些时候,我需要在完成紧迫的工作后重新创建它。
【解决方案3】:

将每个表单的控件放在具有相同大小和位置的面板中。因此您不必一个一个地隐藏所有控件,您只需隐藏一个面板并显示另一个面板即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-10
    • 2018-04-14
    • 2011-05-16
    • 2010-09-17
    • 2012-05-02
    • 2016-03-28
    • 2012-02-17
    • 1970-01-01
    相关资源
    最近更新 更多