簡體   English   中英

C# - WinForms - SDI 或 MDI 方法?

[英]C# - WinForms - SDI or MDI Approach?

我正在創建一個 Visual C# WinForms 應用程序,它將包含 4 個 forms:

  1. 一個“控制”表單,將有 2 個按鈕,可能多達 10 個左右。 因此屏幕需要為最大數量的按鈕提供足夠的空間。
  2. 將包含大型富文本框控件的“日志記錄”表單。
  3. 一個“配置”表單,其中包含一個選項卡控件,其中包含可以調整的各種配置設置。
  4. 與#2 非常相似的“訂單日志”表單。

用戶可能希望以不同的方式重新定位每個 forms。 然而,我希望這些 forms 由父表單“管理”,這樣當應用程序關閉時,所有其他 forms 都會關閉。 有沒有辦法保持 MDI 方法,但允許子 forms 使用 C# WinForms 移出父表單? 謝謝!

通常對於這種情況,您會使用“對接”功能。 在 Visual Studio 本身中也是如此。 通過這種方式,用戶可以非常輕松地隱藏/顯示 forms。

Visual Studio 不附帶這樣的 package,但是有免費的庫。 例如,查看http://sdock.codeplex.com/

你可以做任何你想做的事。

forms之間可以建立父子關系。 或者,如果您願意,您可以在主窗體關閉時明確關閉另一個 forms。

大多數系統正在遠離 MDI(例如 Office),因此即使您有多個 forms,我也可能會使用帶有 SDI 樣式接口的 go。 MDI 往往沒有很好地利用屏幕空間,大多數現代用戶不習慣處理它的一些怪癖。

我曾經使用過一些 MDI 應用程序並嘗試過類似的東西。

我從經驗中學到了一些東西,你應該在決定之前考慮一下。

我注意到 MDI 的一件事是 forms 和控件的繪制速度似乎比常規的 forms 慢一些。 所以當你點擊一個鏈接/按鈕並拋出一個新的子窗體時,你可以看到它在屏幕上直觀地繪制了新的子窗體,這使你的應用程序看起來很慢。 這已經在大量硬件/操作系統組合和測試應用程序上進行了測試,這些應用程序除了打開一個帶有一些控件的表單之外什么都不做。

關於 MDI 的另一件事是您的孩子 windows 將包含在父 window 中,這適用於某些應用程序,但對其他人來說很煩人。

MDI 的另一個怪癖是,如果您有這樣的需要,您不能使用 window 透明度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM