【问题标题】:Switching between to Forms within a single window在单个窗口中切换到表单
【发布时间】:2012-10-16 02:08:32
【问题描述】:

我想将表单 1 更改为表单 2。我不希望它打开一个新窗口,而是将它保留在同一个窗口中,然后当我按下 Next 键或返回键时能够来回切换.单独隐藏每个按钮和图片是唯一的方法吗?

【问题讨论】:

  • 我更新了您的标签以包含 Windows 窗体,这就是我假设您的意思。
  • 您可以使用 DockFill Dock 属性将两个面板放到一个表单中,在它们上面放置控件,然后来回切换面板。
  • @Nick - 虽然在技术上可行,但这种方法导致代码库几乎无法维护。我不得不维护在选项卡控件中开发整个应用程序的表单(MainForm 具有超过 15,000 行代码)。每次收到其中一个应用程序的更改请求时,我都会感到恶心。
  • 您可以将所有控件放入一个面板中,然后隐藏该面板,这也将隐藏该面板中的所有控件。但我怀疑你正在尝试做其他事情,我建议你阅读下面 Reed 的回复或 CurtisHx 的评论
  • @Cyborgx37 我完全同意你的看法。我至少会派生一个面板并将所有控件放在上面。我认为这是最简单的解决方案,当然不是最好的解决方案。

标签: c# winforms


【解决方案1】:

您可能需要考虑不同的方法。

您不能将一种类型的表单更改为另一种类型的表单。最接近的选项是关闭或隐藏第一个并在屏幕上的同一位置显示第二个。

但是,您可以采取不同的方法。您可以将所有内容放入两个 UserControl 实例中,而不是将按钮和逻辑放入表单中,然后只需更改在单个表单中可见的用户控件。

【讨论】:

【解决方案2】:

您可以使用面板、组合框、TabControls 等将常用控件组合在一起。当你想在不同的“屏幕”之间切换时,你可以通过设置visible属性并调用BringToFront()来隐藏或显示组控件,它会隐藏/显示该组控件上的所有控件。

【讨论】:

  • 我再说一遍,虽然在技术上是可行的,但这确实非常不推荐。不要这样做。如果你这样做,你的程序员同事可能会恨你。
  • Cyborgx 是正确的。它的混乱和不可维护。用户控件是更好的选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-07
  • 2010-09-10
  • 1970-01-01
  • 2018-04-15
  • 1970-01-01
  • 2012-11-28
相关资源
最近更新 更多