在主窗体中创建子窗体

Posted

技术标签:

【中文标题】在主窗体中创建子窗体【英文标题】:Creating a subform within a main form 【发布时间】:2013-10-02 15:33:01 【问题描述】:

我正在尝试模仿一个访问表单,其中我在主表单中嵌入了一个子表单。子表单将由基于主表单 ID 的查询填充。当记录发生变化时,子表单数据也会发生变化。这可以在c#中做到吗?

我尝试寻找数据中继器,但我找到的唯一一个是 VisualBasic.PowerPacks 数据中继器。

这是一个非常重要的应用程序,领导希望它的外观和行为与访问应用程序一样。我知道这没有意义,但这就是他想要的。

任何帮助我指出正确的方向将不胜感激。

【问题讨论】:

WinForms? WPF? ASP.NET? 主窗体中的子窗体是指多文档界面吗? en.wikipedia.org/wiki/Multiple_document_interface 我认为 MDI 不是您想要的。您可以使用 Visual Studio 提供的数据源/表单构建器工具来创建一个包含主记录详细信息的表单和一个显示详细记录的“子表单”DatagridView。 【参考方案1】:

您正在寻找的是Multiple-Document Interface (MDI) Applications。使用 WinForm .Net 框架提供 MDI 表单。您应该看到:如何:Create MDI Child Forms - MSDN。

您可能还会看到:Introduction to MDI Forms with C# - Code project

【讨论】:

感谢大家的帮助。对不起,我忘了提到它是一个 winforms 应用程序。我将浏览链接并弄清楚一切。谢谢 我能够使用发布的链接创建父/子表单。如何在访问中显示子表单中重复的数据? 使用 VisualBasic.PowerPacks.DataRepeater 可以在“C#”应用程序中工作吗?我会在路上遇到问题吗?抱歉所有问题。 @JerryWarra,不要创建 C# 应用程序,您也可以在 VB.Net 中创建 MDI 表单。它来自框架。 哈比卜感谢您的回复。我不能使用 VB.net。我正在使用 C#,但我将使用 VisualBasic.PowerPacks.DataRepeater。我只是想弄清楚如何填充组合框,然后将值绑定到它。【参考方案2】:

旧方式称为 MDI(多文档界面)。您仍然可以使用它,但需要使用外部库(如 WPFMDI)。

较新的方法是使用可停靠窗口,但您必须手动对其进行编程。 见:Recommendations on a WPF Docking Library

【讨论】:

Michel,使用可停靠窗口,我如何创建一个数据中继器来模拟它的访问方式? 我不知道数据中继器。我为如何使用可停靠窗口的链接编辑了答案。

以上是关于在主窗体中创建子窗体的主要内容,如果未能解决你的问题,请参考以下文章

MFC 主窗口如何在创建的子窗口前

winform 怎么让子窗体显示在主窗体上?

观察者模式的应用:Winform窗体之间传值

delphi 让子窗体在主窗体内,其在主窗体内最大化,但又不遮盖主窗体的菜单栏

DevExpress TabbedView : 从子窗体创建子窗体

vb里面怎么创建MDI窗体