【问题标题】:how to open C# winforms in the same window like in windows every folder opens in a same window etc如何在同一个窗口中打开 C# winforms,就像在 Windows 中每个文件夹在同一个窗口中打开等
【发布时间】:2014-08-24 03:48:01
【问题描述】:

我正在开发一个包含大约 30 个 winforms 的 c# 应用程序。每个表单都执行一些功能并将数据传递给第二个表单。问题是每个表单都在新窗口中打开,最后我必须将它们全部关闭。我想要的是当我们打开多个表单时,所有表单都在一个/主表单中打开,就像在窗口中一样,它在同一个窗口中打开。要转到我正在使用这个:

form1 f1 = new form1 ();
f1.showdialogue().

【问题讨论】:

  • “我想要的是所有表单都以一个/主表单打开,就像我们打开多个表单时一样在窗口中打开它在同一个窗口中打开。”正如 Micky Duncan 所提到的,这不是很清楚你的意思。如果您可以发布您正在谈论的内容的屏幕截图,那么我们会更好地了解您想要什么。

标签: c# .net winforms


【解决方案1】:

就像在 Windows 中一样,每个文件夹都在同一个窗口中打开等等

您是在描述 Windows 资源管理器吗?

Windows 资源管理器使用 Windows Shell 浏览 shell namespaces。每个命名空间都公开了一系列逻辑文件夹和文件夹项。每个文件夹都可以有专门为显示特定内容而定制的 ShellView。视图不必是“文件夹或文件”,也可以是打印机;网络计算机;或字体等等。 Microsoft 管理控制台 (MMC) 遵循类似的模式。

方法

你可以在 c# 中做类似的事情。

  1. 首先将您的应用分解为区域/部件/组件/文件夹的逻辑集合
  2. 每个区域都有一个对应的UserControl
  3. 当您“浏览”或“打开”一个区域时,您会为该区域创建 UserControl 并显示它
  4. 当移动到另一个区域(或返回)时,您会显示下一个合适的区域

另外你有没有想过一个 page-navigation 风格的应用程序(web 风格;Microsoft Money),而不是弹出新窗口,你只需嵌入一个 UserControl 进入主窗口。此控件占用了大部分 UI 空间。没有“z 顺序”,因为没有重叠的窗口。

然后你可以有前进后退按钮。

在 MSDN 上查找 Inductive User-interfacedesign 以及 Shell 命名空间编程,以获取想法。

相关

由于您使用的是 WinForms,所以有点跑题了,但请查看 WPF Page Navigation 以获得想法。

【讨论】:

  • 如果我还可以补充您的好答案,他也可以使用 IDE 控件
【解决方案2】:

您可以使用 MDIParent 来解决这种类型的问题。 并且您可以关闭任意数量的表单,我正在获取 MdiParent 表单的所有子表单。

【讨论】:

    猜你喜欢
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多