成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SDI、MDI的基本概念和實例理解

開發 后端
SDI、MDI是.NET2.0中的技術,那么什么是SDI、MDI呢?SDI、MDI的相關概念是什么呢?那么本文就向你介紹相關的內容,希望對你了解和學習SDI、MDI有所幫助。

SDI、MDI概述,在Windows 應用程序模型中,一般分單實例應用程序和多實例應用程序,而對于單實例應用程序常見的又有多窗口SDI應用程序和單實例MDI應用程序。下面讓我們詳細了解一下:
 
SDI、MDI詳細介紹

《Windows Forms 2.0 Programming》一書對Windows Forms的應用程序模型進行了比較詳細的介紹。下面列舉兩種單實例應用程序的一些特征。

一、多窗口SDI應用程序(Multiple-SDI Applications)通常具有以下特征:

只運行應用程序的單個實例;

多個頂層窗口互相獨立運行;

不會重新打開當前已經加載的文件;

當最后一個窗口關閉的時候,應用程序也會退出;

有一個Window菜單允許用戶查看并選擇當前有效的頂層窗口。

二、單實例MDI應用程序(Single-MDI Applications)通常具有以下特征:

只運行應用程序的單個實例;

多個MDI子窗口運行在同一個的MDI父窗口中;

支持菜單合并功能,子窗口的菜單按一定規則合并到MDI父窗口菜單中;

不會重新打開當前已經加載的文件;

當最后一個MDI子窗口被關閉時,應用程序不會退出;

當MDI父窗體被關閉時,應用程序退出;

有一個Window菜單允許用戶查看并選擇當前已經打開的子窗口。

SDI、MDI相關概念:

Single Instance

在.NET 2.0中,FCL提供了WindowsFormsApplicationBase類來簡化Windows應用程序編程,如果您是開發人員會感到感到奇怪,WindowsFormsApplicationBase類不在System.Windows.Forms 命名空間中而是屬于Microsoft.VisualBasic.ApplicationServices 命名空間,也許這是作為VB.NET開發人員的優先好處吧。該類對應的程序集為Microsoft.VisualBasic.dll,不過該程序集包含在.NET框架中一起發布,如果要引用該程序集,在部署上不存在額外操作。

WindowsFormsApplicationBase類實現了類似于Application類的一些功能,不過該類還包含一些簡化Windows Forms應用程序開發的接口,下面來簡單了解一下。WindowsFormsApplicationBase類實現了對單實例應用程序的支持,通過設置IsSingleInstance 屬性為True以及重寫OnStartupNextInstance方法可以簡潔的實現。

  1. public sealed class   
  2. SingleInstanceApplication : WindowsFormsApplicationBase  
  3. {  
  4. public SingleInstanceApplication() : base()  
  5. {  
  6. this.IsSingleInstance = true;  
  7. this.ShutdownStyle = ShutdownMode.AfterMainFormCloses;  
  8. }  
  9. protected override void OnCreateMainForm()  
  10. {  
  11. this.MainForm = new MainForm();  
  12. }  
  13.    
  14. protected override void   
  15. OnStartupNextInstance(StartupNextInstanceEventArgs e)  
  16. {  
  17. base.OnStartupNextInstance(e);  
  18. this.MainForm.Activate();  
  19. }  
  20. }  

SingleInstanceApplication類繼承自WindowsFormsApplicationBase,在構造函數中設置為單實例模式,同時設置在主窗體關閉后退出應用程序。在繼承類中,OnCreateMainForm方法被重寫用來創建主窗體,如果要保證應用程序單一實例運行,還需要重寫OnStartupNextInstance方法,在該應用程序的下一個應用程序實例啟動時,OnStartupNextInstance方法會得到執行,在上面的實現代碼中,調用基類方法同時激活主窗口。

Splash Screen

對于常見的Windows應用程序初始化過程中,可能會使用一個啟動畫面來顯示程序的初始化進程,比如微軟的Visual Studio和Office軟件。WindowsFormsApplicationBase提供了SplashScreen屬性或重寫OnCreateSplashScreen方法來設置啟動窗口。下面顯示了創建SplashScreen的實現代碼。

  1. application.SplashScreen = new SplashScreenForm();  

如果 SplashScreen 屬性為空,那么受保護的ShowSplashScreen方法就會調用OnCreateSplashScreen方法創建初始屏幕窗口。

  1. protected override void OnCreateSplashScreen()  
  2. {  
  3. this.SplashScreen = new SplashScreenForm();  

 

也許,我們更想把SingleInstanceApplication類實現為單件模式,那可以簡單的調整一下代碼。

  1. public sealed class   
  2. SingleInstanceApplication :   
  3. WindowsFormsApplicationBase  
  4. {  
  5. private static readonly   
  6. SingleInstanceApplication application =   
  7. new SingleInstanceApplication();  
  8.    
  9. private SingleInstanceApplication() : base()  
  10. {  
  11. this.IsSingleInstance = true;  
  12. this.ShutdownStyle = ShutdownMode.AfterMainFormCloses;  
  13. }  
  14.    
  15. public static SingleInstanceApplication Application  
  16. {  
  17. get { return application; }  
  18. }  
  19. }  

SDI、MDI的一些延續

關于多窗口SDI應用程序和單實例MDI應用程序的一些具體實現,可以參考《Windows Forms 2.0 Programming》一書Chapter 14,作者網站上提供了該書的示例代碼和關于Chapter 14的完整內容。該書由Chris Sells著作,第二版包含了很多.NET 2.0的新功能,對于windows Forms應用程序開發進行了比較詳細的講解,關于書本的更多信息可以訪問Chris Sells的網站。

SDI、MDI的概念以及SDI、MDI相關的內容就向你介紹到這里,希望對你了解和學習SDI、MDI有所幫助。

【編輯推薦】

  1. 詳解.NET內存管理機制與垃圾回收
  2. .Net回車符的問題解決方案
  3. Windows 7下配置.NET開發環境及激活
  4. .NET牛人應該知道些什么
  5. .NET程序中的正則表達式性能問題
責任編輯:仲衡 來源: CSDN博客
相關推薦

2010-04-01 16:54:06

Oracle體系結構

2011-03-28 11:05:17

ODBC

2010-06-24 13:26:53

FTP協議

2017-07-10 16:40:09

2010-06-21 18:04:08

2010-07-07 15:17:40

LDAP協議

2010-08-23 16:58:17

DHCP協議

2010-04-19 10:08:46

Oracle視圖

2017-05-02 14:45:11

深度學習機器學習人工神經網絡

2010-06-08 16:11:10

SPI總線協議

2014-04-16 15:11:19

Spark

2012-09-11 14:39:03

Moosefs

2009-03-20 11:46:10

MGCP協議網關

2015-03-02 15:05:45

LTE

2010-06-08 16:52:38

CANopen總線協議

2010-06-29 13:00:49

EIGRP協議

2010-06-12 14:12:22

RSVP協議

2009-12-21 10:27:52

WCF基本概念

2010-02-23 16:32:29

WCF服務

2009-12-29 18:29:09

Silverlight
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本欧美在线观看视频 | 中文字幕在线观看一区二区 | 国产 欧美 日韩 一区 | 精品免费国产 | 毛片com| 日韩二| 欧美综合一区 | 国产一区久久 | 精品国产乱码久久久久久中文 | 中文字幕日韩一区 | 成人在线观看中文字幕 | 亚洲一区二区三区四区在线观看 | 日本精品一区二区三区视频 | 欧美色综合天天久久综合精品 | 特级特黄特色的免费大片 | 国产免费人成xvideos视频 | 美女福利视频一区 | 韩国精品在线观看 | 午夜精品久久久久久久星辰影院 | 国产精品精品3d动漫 | 伊人免费视频二 | www.成人免费视频 | 国产在线一级片 | 色婷婷av久久久久久久 | 九九热精品视频 | 天天摸天天看 | 三级黄片毛片 | 日韩精品在线观看视频 | 国产福利91精品一区二区三区 | 成人免费一区二区三区视频网站 | 亚洲欧美一区二区三区在线 | 精品真实国产乱文在线 | 国产精品一区在线观看 | 九九热精品视频 | 中文字幕在线观看日韩 | 亚洲国产一区二区三区在线观看 | 日本手机在线 | 国产精品夜夜春夜夜爽久久电影 | 国产精品久久久久久久久久久久 | 日本久久精品视频 | 97成人在线 |