.Net建立MDI表單

來源:互聯網
上載者:User

多重文件介面 (MDI) 應用程式的基本元素是 MDI 子表單,因為它們是使用者互動的中心。

在下面的過程中,將建立顯示 RichTextBox 控制項的 MDI 子表單,該子表單類似於大多數文書處理應用程式。將 RichTextBox 控制項替換為其他控制項(如 DataGrid 控制項或混合控制項)使您得以建立各種可能的 MDI 子視窗(而且進一步擴充為 MDI 應用程式)。

建立 MDI 子表單

建立菜單結構中包含頂級功能表項目“檔案”和“視窗”及功能表項目“建立”和“關閉”的 MDI 父表單。有關建立 MDI 父表單的更多資訊,請參見建立 MDI 父表單。
在“屬性”視窗頂部的下拉式清單中,選擇與“視窗(&W)”功能表項目對應的功能表項目,然後將 MdiList 屬性設定為 true。
這將使“視窗”菜單能夠維護開啟的 MDI 子視窗的列表(活動子視窗旁有一個核取記號)。 在方案總管中,右擊項目,指向“添加”,然後選擇“添加新項”。
此表單將作為 MDI 子表單的模板。

注意   在此步驟中建立的 MDI 子表單是標準的 Windows 表單。因此,它具有 Opacity 屬性,該屬性允許控制表單的透明度。但是,Opacity 屬性用於最上層視窗。不要將其與 MDI 子表單同時使用,否則可能會引起繪製問題。
在“添加新項”對話方塊中,從“模板”窗格中選擇“Windows 表單”(在 Visual Basic 或 Visual C# 中)或“Windows 表單應用程式 (.NET)”(在 Visual C++ 中)。在“名稱”框中,命名表單 Form2。單擊“開啟”按鈕將該表單添加到項目中。
Windows 表單設計器開啟,其中顯示 Form2。

將 RichTextBox 控制項從“工具箱”拖到表單上。
在“屬性”視窗中,將 Anchor 屬性設定為“Top, Left”,並將 Dock 屬性設定為“Fill”。
這導致即使調整 MDI 子表單的大小,RichTextBox 控制項也會完全填充該表單的地區。

為“建立”功能表項目建立 Click 事件處理常式。有關建立事件處理常式的更多資訊,請參見在 Windows 表單設計器上建立事件處理常式。
插入類似於以下代碼的代碼,以便在使用者單擊“建立”功能表項目時建立新的 MDI 子表單(在下面的樣本中,事件處理常式處理 MenuItem2 的 Click 事件。請注意,您的“建立”功能表項目可能不是 MenuItem2,這取決於應用程式結構的具體情況。)。
' Visual Basic
Protected Sub MDIChildNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
   Dim NewMDIChild As New Form2()
   'Set the Parent Form of the Child window.
   NewMDIChild.MdiParent = Me
   'Display the new form.
   NewMDIChild.Show()
End Sub

// C#
protected void MDIChildNew_Click(object sender, System.EventArgs e){
   Form2 newMDIChild = new Form2();
   // Set the Parent Form of the Child window.
   newMDIChild.MdiParent = this;
   // Display the new form.
   newMDIChild.Show();
}

// C++
private:
   System::Void menuItem2_Click(System::Object * sender,
      System::EventArgs * e)
   {
      Form2 *newMDIChild = new Form2();
      // Set the Parent Form of the Child window.
      newMDIChild->MdiParent = this;
      // Display the new form.
      newMDIChild->Show();
   }在 Visual C++ 中,在 Form1.h 的上面添加以下 #include 指令:

// C++
#include "Form2.h"

按 F5 鍵運行該應用程式。請注意,通過從[檔案] 功能表中選擇“建立”,可建立新的 MDI 子表單。該子表單在“視窗”菜單中被跟蹤。
注意   請注意,如果 MDI 子表單有一個 MainMenu 組件(其菜單結構通常為包含功能表項目的菜單結構),並且該子表單是在一個擁有 MainMenu 組件(其菜單結構通常為包含功能表項目的菜單結構)的 MDI 父表單中開啟的,那麼在設定了 MergeType 屬性(作為可選項,還可以設定 MergeOrder 屬性)之後,這兩個功能表項目會自動合并。請將兩個 MainMenu 組件以及該子表單的所有功能表項目的 MergeType 屬性都設定為 MergeItems。另外,設定 MergeOrder 屬性,以便這兩個菜單的功能表項目按所需順序顯示。有關使用 MergeOrder 屬性確定功能表項目位置的更多資訊,請參見以編程方式合并功能表項目。
注意   切記,關閉 MDI 父表單時,每個 MDI 子表單先引發一個 Closing 事件,再引發 MDI 父表單的 Closing 事件。但是,取消 MDI 子表單的 Closing 事件不會妨礙引發 MDI 父表單的 Closing 事件,因為 MDI 父表單的 Closing 事件的 CancelEventArgs 參數現在會設定為 true。通過將 CancelEventArgs 參數設定為 false 可以強制 MDI 父表單和所有 MDI 子表單關閉。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.