65.9K
CodeProject 正在变化。 阅读更多。
Home

为 Windows 窗体应用程序(.NET)添加 MDI 支持

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.70/5 (13投票s)

2006年3月6日

4分钟阅读

viewsIcon

103924

downloadIcon

1863

一篇关于为 .NET 应用程序添加 MDI 支持的文章。

Final Application

引言

本文将演示一种简单有效的方法,可在您的 Windows 窗体应用程序(.NET)中添加 MDI 支持!MSDN 上有很多示例,但没有一个将示例程序整合在一起。为应用程序添加 MDI 支持可以帮助您管理多个文件或其他形式的数据,所有这些都通过一个模板完成。这将大大减少您需要编写的代码量,并使用户能够舒适地使用能够同时处理大量数据的应用程序。本文将向您展示如何设置一个基本的 MDI 支持应用程序,该应用程序使用 RichEdit 控件提供文本编辑器功能。

使用代码

在源代码 zip 文件中,您会找到已完成所有步骤的整个项目。

首先,本文主要面向 Microsoft Visual C++ .NET 2003 用户。不保证此代码能在之前的或之后的版本中正常工作!让我们从打开一个空白的 Microsoft 窗体应用程序(.NET)开始,并将其命名为 MDIApp

Step 1

单击“确定”,您将看到一个名为 Form1 的空白窗体。由于这需要您修改许多行和文件名,因此我不会详细说明更改名称的步骤,但如果您决定将 Form1 更改为其他名称,则在本文的其余部分中必须将 Form1 替换为您选择的新名称。

接下来,单击该窗体并打开“属性”窗口。在 ismdicontainer 下,将值更改为 true。这将告知编译器,我们希望将此窗体作为 MDI 父窗体。如果您愿意,可以更改其他值以使窗体外观符合您的要求。我建议将 WindowState 更改为 Maximize,以生成一个全屏窗口。

Step 2

既然有了 MDI 容器,我们就需要添加菜单。将 MainMenu 控件从工具箱拖到窗体上。创建一个顶层菜单项,其 Text 属性设置为 &File,并带有子菜单项 &NewE&xit。另外,创建一个名为 &Window 的顶层菜单项。选择与 &Window 菜单项对应的菜单项,并将 MdiList 属性设置为 true。这将告知我们的应用程序,我们希望它将子窗口作为子菜单添加到 &Window 菜单的末尾。

现在我们有了父窗口,是时候创建子窗口了。在“解决方案资源管理器”中,右键单击项目,指向“添加”,然后选择“添加新项”。在“添加新项”对话框中,从“模板”窗格中选择“Windows 窗体应用程序(.NET)”。在“名称”框中,将窗体命名为 Form2(同样,如果您更改此名称,也需要进行相应替换)。单击“打开”按钮将窗体添加到项目中。Form2 将默认打开。此窗体将成为 MDI 子窗体的模板。即使您有机会更改子窗口的 Opacity 属性,**也不要这样做!** 这会导致绘制问题。

RichTextBox 控件从“工具箱”拖到窗体上。在“属性”窗口中,将 Anchor 属性设置为 Top, Left,将 Dock 属性设置为 Fill。这将使我们的 RichTextBox 填满整个子窗口!为 New 菜单项创建 Click 事件处理程序。这最好通过在设计模式下双击菜单上的 New 子项来完成。

在创建的新函数下添加以下代码:

private: System::Void menuItem2_Click(System::Object *  sender, 
                                      System::EventArgs *  e)
{
    // This gets a new instance of our child window.
    Form2* newMDIChild = new Form2();
    // Tells our new child window
    // what is our parent window.
    newMDIChild->MdiParent = this;
    // Shows the new form.
    // Don't confuse this with ShowDialog!
    newMDIChild->Show();
}

这将创建一个具有我们所设计样式的子窗口。滚动到顶部并添加下面的行...

#include "Form2.h"

返回到我们的设计视图,为 Exit 菜单项创建 Click 事件处理程序。

在为 Exit 菜单项创建的新函数下添加以下代码:

private: System::Void menuItem3_Click(System::Object *  sender, 
                                      System::EventArgs *  e)
{
    this->Close(); // Closes the application!
}

按 F5 运行应用程序。请注意,通过选择“文件”菜单中的“新建”,您可以创建新的 MDI 子窗体,这些窗体将在“窗口”菜单中进行跟踪。

关注点

在我了解 .NET 的 MDI 之前,我被迫使用 Microsoft 的替代方法来创建我的 MFC 程序。这对我不熟悉 MFC 且不知道许多函数的人来说没什么用。另外,添加 XP 支持很有用,这样 XP 用户就能看到更简洁的设计。它还有助于添加状态栏以填充窗口底部的空白区域。最后一项是我个人偏好,但我建议您将子窗口的 WindowState 设置为 Maximize 以获得更好的外观。

历史

到目前为止,这是我制作的第一篇文章和此文章的第一个版本!;-)

© . All rights reserved.