菜單、工具欄和狀態(tài)條_第1頁
菜單、工具欄和狀態(tài)條_第2頁
菜單、工具欄和狀態(tài)條_第3頁
菜單、工具欄和狀態(tài)條_第4頁
菜單、工具欄和狀態(tài)條_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、菜單、工具欄和狀態(tài)條 第四章第四章 菜單、工具欄和狀態(tài)條菜單、工具欄和狀態(tài)條 內(nèi)內(nèi) 容容 4.1菜單菜單 4.2 工具欄工具欄 4.3 狀態(tài)欄狀態(tài)欄 一、通常的約定一、通常的約定 4.1菜單菜單 菜單設(shè)計的通俗約定:菜單設(shè)計的通俗約定: 若選擇菜單會彈出一對話框或窗口,若選擇菜單會彈出一對話框或窗口, 那么在該菜單項文本后應(yīng)設(shè)計有那么在該菜單項文本后應(yīng)設(shè)計有 “”。 若某項菜單有子菜單,那么在該菜若某項菜單有子菜單,那么在該菜 單項文本后有單項文本后有“”。 若菜單項需要助記符,則用括號將若菜單項需要助記符,則用括號將 帶下劃線的字母括起來。帶下劃線的字母括起來。 若某項菜單有快捷鍵,則一般將

2、其若某項菜單有快捷鍵,則一般將其 列在相應(yīng)菜單項文本之后。列在相應(yīng)菜單項文本之后。 若有圖標(biāo),則在其文本左側(cè)顯示。若有圖標(biāo),則在其文本左側(cè)顯示。 二、菜單類和菜單事件二、菜單類和菜單事件(P153) 4.1菜單菜單 窗體的主菜單是使用窗體的主菜單是使用MenuStrip類來表示的,它從類來表示的,它從ToolStrip 類派生。在新的類派生。在新的 Windows 窗體應(yīng)用程序中可使用窗體應(yīng)用程序中可使用 ToolStrip 及其及其 相關(guān)的類來創(chuàng)建相關(guān)的類來創(chuàng)建Strips界面(菜單、工具欄、狀態(tài)欄等)。創(chuàng)建界面(菜單、工具欄、狀態(tài)欄等)。創(chuàng)建 的這些界面具有的這些界面具有 Windows

3、XP、Office、Internet Explorer 或自或自 定義的外觀和行為定義的外觀和行為。 MenuStrip控件是窗體菜單結(jié)構(gòu)的容器。操作時實際上是將控件是窗體菜單結(jié)構(gòu)的容器。操作時實際上是將 ToolStripMenuItem 對象添加到表示菜單結(jié)構(gòu)中各對象添加到表示菜單結(jié)構(gòu)中各MenuStrip實實 例中。每個例中。每個 ToolStripMenuItem 可以成為應(yīng)用程序的命令或其他可以成為應(yīng)用程序的命令或其他 子菜單項的父菜單。子菜單項的父菜單。 MenuStrip 是是 ToolStripMenuItem、ToolStripComboBox、 ToolStripSepar

4、ator 和和 ToolStripTextBox 等對象的容器。等對象的容器。 一些菜單事件:一些菜單事件: (P153) 三、用設(shè)計器編輯菜單三、用設(shè)計器編輯菜單 使用菜單實例使用菜單實例 (1) 創(chuàng)建一個創(chuàng)建一個Windows窗體應(yīng)用程序項目窗體應(yīng)用程序項目Win_Menu。 (2) 將工具箱中的將工具箱中的MenuStrip組件拖放到窗體上,在窗體模組件拖放到窗體上,在窗體模 版下將出現(xiàn)一個版下將出現(xiàn)一個menuStrip1圖標(biāo),它是該窗體的一個主菜單。圖標(biāo),它是該窗體的一個主菜單。 (3) 在在“請在此處鍵入請在此處鍵入”框中輸入框中輸入“文件文件( private: System:V

5、oid On_Change(System:Object sender, System:EventArgs e) this-menuStrip1-Visible=false; this-menuStrip2-Visible=true; private: System:Void On_Exit(System:Object sender, System:EventArgs e) Application:Exit(); private: System:Void On_Return(System:Object sender, System:EventArgs e) this-menuStrip1-Vis

6、ible=true; this-menuStrip2-Visible=false; (7) 編譯、連接、運行。編譯、連接、運行。 ToolStripItemCollection 類表示類表示 ToolStripItem 對象的集合對象的集合 。 從從ToolStrip派生類的很多屬性都與它有關(guān),如派生類的很多屬性都與它有關(guān),如MenuStrip類的類的 Items屬性、屬性、ToolStripMenuItem的的DropDownItems屬性等都是屬性等都是 ToolStripItemCollection句柄類型,所以通過使用句柄類型,所以通過使用 ToolStripItemCollectio

7、n 的的Add、Remove 和和 RemoveAt 等方法很等方法很 容易在集合中添加和移除單個控件。還可以使用容易在集合中添加和移除單個控件。還可以使用 AddRange 或或 Clear 方法在集合中添加或移除所有控件。方法在集合中添加或移除所有控件。 四、菜單的編程控制四、菜單的編程控制 菜單動態(tài)添加和事件處理實例:菜單動態(tài)添加和事件處理實例: (1)在前列的)在前列的Win_Menu項目的窗體中添加一個編輯框項目的窗體中添加一個編輯框 textBox1,用來輸入菜單項的標(biāo)題文本,再添加一個,用來輸入菜單項的標(biāo)題文本,再添加一個添加添加按鈕按鈕 button1。 4.1菜單菜單 (2)

8、 單擊單擊添加添加按鈕,為該控件添加按鈕,為該控件添加Click事件代碼:事件代碼: private: System:Void button1_Click(System:Object sender, System:EventArgs e) String str = this-textBox1-Text; str = str-Trim();/ 去掉字符串前后的空格去掉字符串前后的空格 if (str = = L) MessageBox:Show( L不能添加該菜單項!不能添加該菜單項!,L提示提示 ); return; System:Windows:Forms:ToolStripMenuItem

9、 tempItem; tempItem= gcnew System:Windows:Forms:ToolStripMenuItem(str); tempItem-Click += gcnew System:EventHandler ( this, /添加到添加到menuStrip1中中 /this-menuStrip1-Items-Add(tempItem); /添加到添加到menuStrip1的的 “文件文件” 菜單中菜單中,索引值為,索引值為1 this-toolStripMenuItem1-DropDownItems-Insert(1,tempItem); private: System

10、:Void On_MenuCommand(System:Object sender,System:EventArgs e) System:Windows:Forms:ToolStripMenuItem tempItem= safe_cast(sender); Stringstr = tempItem-Text; if (str-Equals( L退出退出( else MessageBox:Show( str, L你選擇了菜單項你選擇了菜單項 ); (3)為)為Form1類添加一個公共菜單項類添加一個公共菜單項Click事件的處理方事件的處理方 法法On_MenuCommand: 五、快捷菜單五

11、、快捷菜單 ContextMenuStrip 類表示快捷菜單??旖莶藛瓮ǔS糜谂c特類表示快捷菜單。快捷菜單通常用于與特 定情況有關(guān)且不適合在定情況有關(guān)且不適合在 MenuStrip 中顯示的命令。中顯示的命令。 許多可視控件(以及許多可視控件(以及 Form 本身)都有一個本身)都有一個 Control.ContextMenuStrip 屬性,該屬性將屬性,該屬性將 ContextMenuStrip 類綁定到顯示快捷菜單的控件。多個控件可使用一個類綁定到顯示快捷菜單的控件。多個控件可使用一個 ContextMenuStrip。 ContextMenuStrip同樣是同樣是ToolStripMe

12、nuItem、 ToolStripComboBox、ToolStripSeparator 和和 ToolStripTextBox 對對 象的容器。象的容器。 4.1菜單菜單 五、快捷菜單五、快捷菜單 使用快捷菜單實例使用快捷菜單實例 (1)創(chuàng)建創(chuàng)建Windows窗體應(yīng)用程序項目窗體應(yīng)用程序項目Win_ContextMenu。 (2)將工具箱中的將工具箱中的ContextMenuStrip組件拖放到窗體上,創(chuàng)組件拖放到窗體上,創(chuàng) 建一個快捷菜單建一個快捷菜單ContextMenuStrip1。依次添加三個菜單項,分。依次添加三個菜單項,分 別為別為“菜單項菜單項1”、“菜單項菜單項2”、“菜單項

13、菜單項3”。 (3) 在在Form1窗體中添加三個窗體中添加三個TextBox控件,并在控件,并在TextBox控控 件的屬性窗口中,將件的屬性窗口中,將ContextMenuStrip屬性選擇為屬性選擇為 ContextMenuStrip1。 (4) 為為Form1窗體添加窗體添加MouseDown事件處理方法,為事件處理方法,為 ContextMenuStrip1添加添加Opening事件。它們的代碼:事件。它們的代碼: 4.1菜單菜單 private: System:Void Form1_MouseDown(System:Object sender, System:Windows:For

14、ms:MouseEventArgs e) if (e-Button = System:Windows:Forms:MouseButtons:Right) / 右擊鼠標(biāo)右擊鼠標(biāo) this-contextMenuStrip1-Show( this, System:Drawing:Point( e-X, e-Y ); private: System:Void contextMenuStrip1_Opening (System:Object sender, System:ComponentModel:CancelEventArgs e) this-ToolStripMenuItem1-Enabled

15、= true; this-ToolStripMenuItem2-Enabled = true; this-ToolStripMenuItem3-Enabled = true; if (this-contextMenuStrip1-SourceControl = this-textBox1) this-ToolStripMenuItem1-Enabled = false; else if (this-contextMenuStrip1-SourceControl = this-textBox2) this-ToolStripMenuItem2-Enabled = false; else if(t

16、his-contextMenuStrip1-SourceControl =this-textBox3) this-ToolStripMenuItem3-Enabled = false; 在新的在新的 Windows 窗體應(yīng)用程序中使用窗體應(yīng)用程序中使用 ToolStrip 及其相關(guān)的及其相關(guān)的 類來創(chuàng)建工具欄,這些工具欄具有類來創(chuàng)建工具欄,這些工具欄具有 Windows XP、Office、 Internet Explorer的特征或自定義的外觀和行為。的特征或自定義的外觀和行為。ToolStrip 控件控件 也提供豐富的設(shè)計時體驗,包括就地激活和編輯、自定義布局也提供豐富的設(shè)計時體驗,包括就

17、地激活和編輯、自定義布局 等。等。 盡管盡管 ToolStrip 類提供了許多可管理繪制、鼠標(biāo)和鍵盤輸入類提供了許多可管理繪制、鼠標(biāo)和鍵盤輸入 以及拖放功能的成員,但是用戶也可以使用以及拖放功能的成員,但是用戶也可以使用 ToolStripManager 類類 在指定的在指定的 ToolStripContainer 內(nèi)聯(lián)接內(nèi)聯(lián)接 ToolStrip 控件,以及將控件,以及將 ToolStrip 控件相互合并。通過將控件相互合并。通過將 ToolStripRenderer 類和類和 ToolStripManager 類結(jié)合使用,可以獲得對繪制樣式和布局樣式類結(jié)合使用,可以獲得對繪制樣式和布局樣式

18、 的更好控制和更多的自定義功能。的更好控制和更多的自定義功能。 4.2 工具欄工具欄(P160) 4.2 工具欄工具欄 ToolStrip 也是也是ToolStripButton、ToolStripComboBox、 ToolStripSplitButton、ToolStripLabel、ToolStripSeparator、 ToolStripDropDownButton、ToolStripProgressBar 和和 ToolStripTextBox 對象的容器。對象的容器。 總之,總之,ToolStrip 控件為高度可配置的、可擴展的控件,它控件為高度可配置的、可擴展的控件,它 提供了許

19、多屬性、方法和事件,可用來自定義外觀和行為。提供了許多屬性、方法和事件,可用來自定義外觀和行為。 StatusStrip 控件用于向用戶顯示操作的狀態(tài)信息,或顯示操控件用于向用戶顯示操作的狀態(tài)信息,或顯示操 作對象在應(yīng)用程序中相關(guān)的上下文信息。通常作對象在應(yīng)用程序中相關(guān)的上下文信息。通常 StatusStrip 控件控件 由由 ToolStripStatusLabel 對象組成,其中每個對象都可顯示文本對象組成,其中每個對象都可顯示文本 或圖標(biāo)。或圖標(biāo)。StatusStrip 還可包含還可包含 ToolStripDropDownButton、 ToolStripSplitButton 和和 T

20、oolStripProgressBar 控件。控件。 默認(rèn)的默認(rèn)的 StatusStrip 沒有面板。若要將面板添加到?jīng)]有面板。若要將面板添加到 StatusStrip,請使用,請使用 ToolStripItemCollection.AddRange 方法,方法, 或使用或使用 StatusStrip 項集合編輯器在設(shè)計時添加、移除或重新排項集合編輯器在設(shè)計時添加、移除或重新排 序項并修改屬性。序項并修改屬性。 4.3 狀態(tài)欄狀態(tài)欄(P164) 實例:簡單的記事本應(yīng)用程序?qū)嵗汉唵蔚挠浭卤緫?yīng)用程序 一、一、 創(chuàng)建記事本窗體和菜單創(chuàng)建記事本窗體和菜單 (1)創(chuàng)建一個)創(chuàng)建一個Windows窗體應(yīng)

21、用程序窗體應(yīng)用程序Win_NotePad。 (2)將工具箱中的)將工具箱中的TextBox控件拖放到窗體中,其控件拖放到窗體中,其Name屬屬 性為性為pTextBox,將,將AcceptsReturn(是否允許輸入回車符)和(是否允許輸入回車符)和 AcceptsTab (是否允許輸入(是否允許輸入tab符)屬性設(shè)為符)屬性設(shè)為True,將,將Dock屬屬 性設(shè)為性設(shè)為Fill,將,將Multiline屬性設(shè)為屬性設(shè)為True,將,將ScrollBars屬性設(shè)為屬性設(shè)為 Both,將,將WordWrap(是否自動換行)屬性設(shè)為(是否自動換行)屬性設(shè)為False。 (3) 將工具箱中的將工具箱

22、中的MenuStrip組件拖放到窗體上,創(chuàng)建了主組件拖放到窗體上,創(chuàng)建了主 菜單菜單menuStrip1。添加一個頂層菜單項。添加一個頂層菜單項“文件文件( size=System:Drawing:Size( this-ClientSize.Width, this-ClientSize.Height - this-statusStrip1-Height); this-pTextBox-Size = size; 三、三、 顯示日期時間和鼠標(biāo)位置顯示日期時間和鼠標(biāo)位置 (1)將工具箱中的)將工具箱中的Timer組件拖放到窗體中,添加并創(chuàng)建組件拖放到窗體中,添加并創(chuàng)建 了一個了一個Timer組件組件

23、timer1,將,將Enabled屬性設(shè)為屬性設(shè)為True,該其添加,該其添加 Tick事件事件On_Timer,代碼:,代碼: private: System:Void On_Timer(System:Object sender, System:EventArgs e) this-toolStripStatusLabel6-Text= System:DateTime:Now.ToLongTimeString(); (2)為)為TextBox控件添加控件添加MouseMove事件事件 On_MouseMove,代碼:,代碼: private: System:Void On_MouseMove(

24、System:Object sender, System:Windows:Forms:MouseEventArgs e) String str=String:Concat(LX:, e-X.ToString(), L, Y:,e-Y.ToString(); this-toolStripStatusLabel5-Text = str; 四、顯示特殊鍵狀態(tài)四、顯示特殊鍵狀態(tài) (1) 打開打開Form1.h文件,添加文件,添加GetKeyState函數(shù)導(dǎo)入代碼:函數(shù)導(dǎo)入代碼: using namespace System:Runtime:InteropServices; DllImport(user

25、32.dll, EntryPoint = GetKeyState“, CharSet =CharSet:Unicode) short GetKeyState( int nVirtKey); (2) 在在Form1類定義一個類定義一個UpdateKeyPanel函數(shù),用來根據(jù)函數(shù),用來根據(jù) Caps Lock、Num Lock和和Scroll Lock鍵的狀態(tài)更新狀態(tài)欄的相應(yīng)鍵的狀態(tài)更新狀態(tài)欄的相應(yīng) 窗格:窗格: private: void UpdateKeyPanel(void) short nCaps = GetKeyState( 20 );/ Caps Lock鍵值為鍵值為 if ( nC

26、aps != 0 )/ Caps Lock鍵燈亮?xí)r鍵燈亮?xí)r this-toolStripStatusLabel2-Text = L大寫大寫; else this-toolStripStatusLabel2-Text = L小寫小寫; nCaps = GetKeyState( 144 ); / Num Lock鍵值為鍵值為 if ( nCaps != 0 )/ Num Lock鍵燈亮?xí)r鍵燈亮?xí)r this-toolStripStatusLabel3-Text = L數(shù)字?jǐn)?shù)字; else this-toolStripStatusLabel3-Text = L; nCaps = GetKeyState

27、( 145 );/ Scroll Lock鍵值為鍵值為 if ( nCaps != 0 ) / Scroll Lock 鍵燈亮?xí)r鍵燈亮?xí)r this-toolStripStatusLabel4-Text = L滾動滾動; else this-toolStripStatusLabel4-Text = L; (3) 為窗體添加為窗體添加Load事件事件On_Load,代碼:,代碼: private: System:Void On_Load(System:Object sender, System:EventArgs e) UpdateKeyPanel(); (4) 為為pTextBox控件添加控件添

28、加KeyDown和和KeyUp事件的共同處理事件的共同處理 方法方法On_Key,代碼:,代碼: private: System:Void On_Key(System:Object sender, System:Windows:Forms:KeyEventArgs e) UpdateKeyPanel(); (5) 編譯運行并測試。編譯運行并測試。 五、菜單功能的實現(xiàn)五、菜單功能的實現(xiàn) (1) 添加支持文件流的命名空間:添加支持文件流的命名空間: using namespace System:IO; (2) 為菜單項為菜單項“新建新建( private: System:Void On_New s

29、ender, System:EventArgs e) this-Text = L簡單記事本簡單記事本-無標(biāo)題無標(biāo)題; this-pTextBox-Text = L; / 清除編輯框中的內(nèi)容清除編輯框中的內(nèi)容 this-Select( 0, 0 ); / 將插入符移到第將插入符移到第( 0, 0 )位置位置 this-pTextBox-Modified = false; this-str = L; private: System:Void On_Open sender, System:EventArgs e) Open pOFD = gcnew Open(); pOFD-Filter = L文本

30、文件文本文件(*.txt)|*.txt|所有文件所有文件(*.*)|*.*; pOFD-DefaultExt = Ltxt; System:Windows:Forms:DialogResult nResult = pOFD-ShowDialog(); if (nResult = System:Windows:Forms:DialogResult:OK) str = pOFD-; StreamReader pReader = gcnew StreamReader( str, System:Text:Encoding:Default ); this-pTextBox-Text = pReader-

31、ReadToEnd(); this-pTextBox-Select( 0, 0 ); this-pTextBox-Modified = false; this-Text = String:Concat( L簡單記事本簡單記事本-, str ); pReader-Close(); private: System:Void On_Save sender, System:EventArgs e) if (strLength = 0) / 無文件名無文件名 Save pSFD = gcnew Save(); pSFD-Filter = L文本文件文本文件(*.txt)|*.txt|所有件所有件(*.*

32、)|*.*; pSFD-DefaultExt = Ltxt; System:Windows:Forms:DialogResult nResult = pSFD-ShowDialog(); if (nResult = System:Windows:Forms:DialogResult:OK) str = pSFD-; else return; StreamWriter pWriter = ( str ); int nLength = this-pTextBox-Text-Length; pWriter-Write(pTextBox-Text-ToCharArray(),0,nLength); p

33、Writer-Close(); this-pTextBox-Modified = false; this-Text = String:Concat( L簡單記事本簡單記事本-, str ); private: System:Void On_Exit(System:Object sender, System:EventArgs e) this-Close(); 六、菜單功能的細(xì)化六、菜單功能的細(xì)化 編輯框中原有的內(nèi)容被修改后,當(dāng)用戶選擇編輯框中原有的內(nèi)容被修改后,當(dāng)用戶選擇“新建新建”、“打打 開開”或或“退出退出”菜單命令時,應(yīng)提醒是否保存操作。通過檢測文菜單命令時,應(yīng)提醒是否保存操作。通過檢

34、測文 本框的本框的modified屬性可完成該操作。屬性可完成該操作。 (1) 在事件處理方法在事件處理方法On_Load中添加下列代碼:中添加下列代碼: On_NewFile( sender, e ); 最初應(yīng)為空文檔,供用戶操作。最初應(yīng)為空文檔,供用戶操作。 (2)添加如下讓用戶進行保存操作的函數(shù),通過檢測文本框的添加如下讓用戶進行保存操作的函數(shù),通過檢測文本框的 Modified屬性完成,其代碼如下:屬性完成,其代碼如下: private: bool DoModified() if (!(pTextBox-Modified) return true;/ 沒有修改沒有修改 System:Windows:Forms:DialogResult nRes = MessageBox:Show(L當(dāng)前文件中的內(nèi)容有修改,需要保當(dāng)前文件中的內(nèi)容有修改,需要保 存嗎?存嗎?, L簡單記事本簡單記事本, MessageBoxButtons:YesNoCancel ); / 顯示消息對話框顯示消息對話框 switch

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論