菜单工具栏和状态条

上传人:hs****ma 文档编号:570728350 上传时间:2024-08-06 格式:PPT 页数:38 大小:289KB
返回 下载 相关 举报
菜单工具栏和状态条_第1页
第1页 / 共38页
菜单工具栏和状态条_第2页
第2页 / 共38页
菜单工具栏和状态条_第3页
第3页 / 共38页
菜单工具栏和状态条_第4页
第4页 / 共38页
菜单工具栏和状态条_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《菜单工具栏和状态条》由会员分享,可在线阅读,更多相关《菜单工具栏和状态条(38页珍藏版)》请在金锄头文库上搜索。

1、菜单、工具栏和状态条第四章 菜单、工具栏和状态条内 容4.1菜单4.2 工具栏4.3 状态栏一、通常的约定4.1菜单菜单设计的通俗约定:若选择菜单会弹出一对话框或窗口,那么在该菜单项文本后应设计有“”。若某项菜单有子菜单,那么在该菜单项文本后有“”。若菜单项需要助记符,则用括号将带下划线的字母括起来。若某项菜单有快捷键,则一般将其列在相应菜单项文本之后。 若有图标,则在其文本左侧显示。二、菜单类和菜单事件(P153)4.1菜单窗体的主菜单是使用MenuStrip类来表示的,它从ToolStrip类派生。在新的 Windows 窗体应用程序中可使用 ToolStrip 及其相关的类来创建Stri

2、ps界面(菜单、工具栏、状态栏等)。创建的这些界面具有 Windows XP、Office、Internet Explorer 或自定义的外观和行为。MenuStrip控件是窗体菜单结构的容器。操作时实际上是将 ToolStripMenuItem 对象添加到表示菜单结构中各MenuStrip实例中。每个 ToolStripMenuItem 可以成为应用程序的命令或其他子菜单项的父菜单。MenuStrip 是 ToolStripMenuItem、ToolStripComboBox、ToolStripSeparator 和 ToolStripTextBox 等对象的容器。一些菜单事件:(P153)

3、三、用设计器编辑菜单使用菜单实例(1) 创建一个Windows窗体应用程序项目Win_Menu。(2) 将工具箱中的MenuStrip组件拖放到窗体上,在窗体模版下将出现一个menuStrip1图标,它是该窗体的一个主菜单。(3) 在“请在此处键入”框中输入“文件(&F)”,并在“文件(&F)” 菜单项的下方“请在此处键入”框中输入“切换(&C)”,在该菜单项的属性窗口中,将快捷键属性ShortcutKeys选择为Alt和F2,即为Alt+F2组合键。单击“切换(&C)”菜单项下的“请在此处键入”右边的箭头按钮,从中选择Separator,这将此处的菜单项变成一条水平分隔线。 在水平分隔线下方

4、添加“退出(&X)” 。 4.1菜单(4)再将工具箱中的MenuStrip组件拖放到窗体上,为窗体添加第二个menuStrip2主菜单。在“请在此处键入”框中输入“返回(&R)”,并将快捷键属性ShortcutKeys选择为F5,即为F5功能键。(5)利用属性窗口分别为 “切换(&C)” 、 “退出(&X)” 、 “返回(&R)”菜单添加Click事件, 函数名称分别为On_Change、On_Exit和On_Return;为Form1窗体添加Load事件。(6)各事件处理函数代码如下:private: System:Void Form1_Load(System:Object sender,S

5、ystem:EventArgs e) this-menuStrip2-Visible=false;private: System:Void 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_Retur

6、n(System:Object sender, System:EventArgs e) this-menuStrip1-Visible=true;this-menuStrip2-Visible=false;(7) 编译、连接、运行。ToolStripItemCollection 类表示 ToolStripItem 对象的集合 。 从ToolStrip派生类的很多属性都与它有关,如MenuStrip类的Items属性、ToolStripMenuItem的DropDownItems属性等都是ToolStripItemCollection句柄类型,所以通过使用ToolStripItemCollect

7、ion 的Add、Remove 和 RemoveAt 等方法很容易在集合中添加和移除单个控件。还可以使用 AddRange 或 Clear 方法在集合中添加或移除所有控件。四、菜单的编程控制菜单动态添加和事件处理实例:(1)在前列的Win_Menu项目的窗体中添加一个编辑框textBox1,用来输入菜单项的标题文本,再添加一个添加按钮button1。4.1菜单(2) 单击添加按钮,为该控件添加Click事件代码:private: System:Void button1_Click(System:Object sender, System:EventArgs e) String str = th

8、is-textBox1-Text;str = str-Trim();/ 去掉字符串前后的空格if (str = = L) MessageBox:Show( L不能添加该菜单项!,L提示 );return; System:Windows:Forms:ToolStripMenuItem tempItem; tempItem= gcnew System:Windows:Forms:ToolStripMenuItem(str);tempItem-Click += gcnew System:EventHandler( this,&Form1:On_MenuCommand);/添加到menuStrip1中

9、/this-menuStrip1-Items-Add(tempItem); /添加到menuStrip1的 “文件” 菜单中,索引值为1 this-toolStripMenuItem1-DropDownItems-Insert(1,tempItem);private: System:Void On_MenuCommand(System:Object sender,System:EventArgs e)System:Windows:Forms:ToolStripMenuItem tempItem=safe_cast(sender);Stringstr = tempItem-Text;if (st

10、r-Equals( L退出(&X)|(str-Equals( L退出(&x) this-Close();elseMessageBox:Show( str, L你选择了菜单项 );(3)为Form1类添加一个公共菜单项Click事件的处理方法On_MenuCommand:五、快捷菜单ContextMenuStrip 类表示快捷菜单。快捷菜单通常用于与特定情况有关且不适合在 MenuStrip 中显示的命令。许多可视控件(以及 Form 本身)都有一个 Control.ContextMenuStrip 属性,该属性将 ContextMenuStrip 类绑定到显示快捷菜单的控件。多个控件可使用一个

11、 ContextMenuStrip。ContextMenuStrip同样是ToolStripMenuItem、ToolStripComboBox、ToolStripSeparator 和 ToolStripTextBox 对象的容器。4.1菜单五、快捷菜单使用快捷菜单实例(1)创建Windows窗体应用程序项目Win_ContextMenu。(2)将工具箱中的ContextMenuStrip组件拖放到窗体上,创建一个快捷菜单ContextMenuStrip1。依次添加三个菜单项,分别为“菜单项1”、“菜单项2”、“菜单项3”。(3) 在Form1窗体中添加三个TextBox控件,并在TextB

12、ox控件的属性窗口中,将ContextMenuStrip属性选择为ContextMenuStrip1。(4) 为Form1窗体添加MouseDown事件处理方法,为ContextMenuStrip1添加Opening事件。它们的代码:4.1菜单private: System:Void Form1_MouseDown(System:Objectsender, System:Windows:Forms:MouseEventArgs e) if (e-Button = System:Windows:Forms:MouseButtons:Right) / 右击鼠标this-contextMenuStr

13、ip1-Show( this,System:Drawing:Point( e-X, e-Y );private: System:Void contextMenuStrip1_Opening(System:Object sender, System:ComponentModel:CancelEventArgs e) this-ToolStripMenuItem1-Enabled = true;this-ToolStripMenuItem2-Enabled = true;this-ToolStripMenuItem3-Enabled = true;if (this-contextMenuStrip

14、1-SourceControl = this-textBox1)this-ToolStripMenuItem1-Enabled = false;else if (this-contextMenuStrip1-SourceControl = this-textBox2)this-ToolStripMenuItem2-Enabled = false;else if(this-contextMenuStrip1-SourceControl=this-textBox3)this-ToolStripMenuItem3-Enabled = false;在新的 Windows 窗体应用程序中使用 ToolS

15、trip 及其相关的类来创建工具栏,这些工具栏具有 Windows XP、Office、Internet Explorer的特征或自定义的外观和行为。ToolStrip 控件也提供丰富的设计时体验,包括就地激活和编辑、自定义布局等。尽管 ToolStrip 类提供了许多可管理绘制、鼠标和键盘输入以及拖放功能的成员,但是用户也可以使用 ToolStripManager 类在指定的 ToolStripContainer 内联接 ToolStrip 控件,以及将 ToolStrip 控件相互合并。通过将 ToolStripRenderer 类和 ToolStripManager 类结合使用,可以获得

16、对绘制样式和布局样式的更好控制和更多的自定义功能。4.2 工具栏(P160)4.2 工具栏ToolStrip 也是ToolStripButton、ToolStripComboBox、ToolStripSplitButton、ToolStripLabel、ToolStripSeparator、ToolStripDropDownButton、ToolStripProgressBar 和 ToolStripTextBox 对象的容器。 总之,ToolStrip 控件为高度可配置的、可扩展的控件,它提供了许多属性、方法和事件,可用来自定义外观和行为。StatusStrip 控件用于向用户显示操作的状态

17、信息,或显示操作对象在应用程序中相关的上下文信息。通常 StatusStrip 控件由 ToolStripStatusLabel 对象组成,其中每个对象都可显示文本或图标。StatusStrip 还可包含 ToolStripDropDownButton、ToolStripSplitButton 和 ToolStripProgressBar 控件。 默认的 StatusStrip 没有面板。若要将面板添加到 StatusStrip,请使用 ToolStripItemCollection.AddRange 方法,或使用 StatusStrip 项集合编辑器在设计时添加、移除或重新排序项并修改属性。

18、4.3 状态栏(P164)实例:简单的记事本应用程序一、 创建记事本窗体和菜单(1)创建一个Windows窗体应用程序Win_NotePad。(2)将工具箱中的TextBox控件拖放到窗体中,其Name属性为pTextBox,将AcceptsReturn(是否允许输入回车符)和AcceptsTab (是否允许输入tab符)属性设为True,将Dock属性设为Fill,将Multiline属性设为True,将ScrollBars属性设为Both,将WordWrap(是否自动换行)属性设为False。(3) 将工具箱中的MenuStrip组件拖放到窗体上,创建了主菜单menuStrip1。添加一个

19、顶层菜单项“文件(&F)”,其Name属性设为,其下再添加四个菜单项:“新建(&N)”、“打开(&O)”、“保存(&S)”和“退出(&X)”,其Name属性分别设为、和。二、添加状态栏(1)将工具箱中的StatusStrip控件拖放到窗体上,创建了一个状态栏控件statusStrip1。 单击statusStrip1控件右方的箭头按钮或打开与属性Items相关联的项集合编辑器,添加六个ToolStripStatusLabel面板对象,text属性分别为就绪、大写、数字、滚动、X:000,Y:000、时间。设置其它有关属性。(2) 为窗体添加SizeChanged(大小改变时)或Resize(调

20、整大小时)的事件On_FormSize,代码:private: System:Void On_FormSize(System:Object sender, System:EventArgs e) System:Drawing:Size size; size=System:Drawing:Size( this-ClientSize.Width, this-ClientSize.Height - this-statusStrip1-Height); this-pTextBox-Size = size;三、 显示日期时间和鼠标位置(1)将工具箱中的Timer组件拖放到窗体中,添加并创建了一个Time

21、r组件timer1,将Enabled属性设为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(System:Object sender,System:Wind

22、ows:Forms:MouseEventArgs e) String str=String:Concat(LX:,e-X.ToString(), L, Y:,e-Y.ToString();this-toolStripStatusLabel5-Text = str;四、显示特殊键状态(1) 打开Form1.h文件,添加GetKeyState函数导入代码:using namespace System:Runtime:InteropServices;DllImport(user32.dll, EntryPoint = GetKeyState“, CharSet =CharSet:Unicode)sh

23、ort GetKeyState( int nVirtKey); (2) 在Form1类定义一个UpdateKeyPanel函数,用来根据Caps Lock、Num Lock和Scroll Lock键的状态更新状态栏的相应窗格:private: void UpdateKeyPanel(void)short nCaps = GetKeyState( 20 );/ Caps Lock键值为if ( nCaps != 0 )/ Caps Lock键灯亮时this-toolStripStatusLabel2-Text = L大写;elsethis-toolStripStatusLabel2-Text =

24、 L小写;nCaps = GetKeyState( 144 ); / Num Lock键值为if ( nCaps != 0 )/ Num Lock键灯亮时this-toolStripStatusLabel3-Text = L数字;elsethis-toolStripStatusLabel3-Text = L;nCaps = GetKeyState( 145 );/ Scroll Lock键值为if ( nCaps != 0 ) / Scroll Lock 键灯亮时this-toolStripStatusLabel4-Text = L滚动;elsethis-toolStripStatusLabe

25、l4-Text = L;(3) 为窗体添加Load事件On_Load,代码:private: System:Void On_Load(System:Object sender, System:EventArgs e) UpdateKeyPanel(); (4) 为pTextBox控件添加KeyDown和KeyUp事件的共同处理方法On_Key,代码:private: System:Void On_Key(System:Object sender, System:Windows:Forms:KeyEventArgs e) UpdateKeyPanel(); (5) 编译运行并测试。五、菜单功能的

26、实现 (1) 添加支持文件流的命名空间:using namespace System:IO; (2) 为菜单项“新建(&N)”、 “打开(&O)” 、“保存(&O)”、“退出(&X)”分别添加Click事件,代码: private: String str ;private: System:Void On_New sender, System:EventArgs e) this-Text = L简单记事本-无标题;this-pTextBox-Text = L; / 清除编辑框中的内容this-Select( 0, 0 ); / 将插入符移到第( 0, 0 )位置this-pTextBox-Mod

27、ified = false;this-str = L;private: System:Void On_Open sender, System:EventArgs e) Open pOFD = gcnew Open(); pOFD-Filter = L文本文件(*.txt)|*.txt|所有文件(*.*)|*.*; pOFD-DefaultExt = Ltxt; System:Windows:Forms:DialogResult nResult = pOFD-ShowDialog();if (nResult = System:Windows:Forms:DialogResult:OK) str

28、= pOFD-; StreamReader pReader = gcnew StreamReader( str,System:Text:Encoding:Default );this-pTextBox-Text = pReader-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:EventArg

29、s e) if (strLength = 0) / 无文件名Save pSFD = gcnew Save(); pSFD-Filter = L文本文件(*.txt)|*.txt|所有件(*.*)|*.*;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

30、nLength = this-pTextBox-Text-Length; pWriter-Write(pTextBox-Text-ToCharArray(),0,nLength); pWriter-Close(); this-pTextBox-Modified = false;this-Text = String:Concat( L简单记事本-, str );private: System:Void On_Exit(System:Object sender, System:EventArgs e) this-Close();六、菜单功能的细化编辑框中原有的内容被修改后,当用户选择“新建”、“打

31、开”或“退出”菜单命令时,应提醒是否保存操作。通过检测文本框的modified属性可完成该操作。(1) 在事件处理方法On_Load中添加下列代码: On_NewFile( sender, e );最初应为空文档,供用户操作。(2)添加如下让用户进行保存操作的函数,通过检测文本框的Modified属性完成,其代码如下:private: bool DoModified() if (!(pTextBox-Modified) return true;/ 没有修改System:Windows:Forms:DialogResult nRes = MessageBox:Show(L当前文件中的内容有修改,

32、需要保存吗?, L简单记事本, MessageBoxButtons:YesNoCancel ); / 显示消息对话框switch (nRes) case System:Windows:Forms:DialogResult:Cancel: return false; case System:Windows:Forms:DialogResult:Yes: On_Save, nullptr);case System:Windows:Forms:DialogResult:No: return true; default : return false; (3) 在“新建”或“打开”菜单事件处理方法On_

33、NewFile和On_OpenFile的函数体的代码的最前面添加下列代码: if (!DoModified() return;(4) 为窗体添加FormClosing事件On_FormClosing,代码:private: System:Void On_FormClosing(System:Object sender, System:Windows:Forms:FormClosingEventArgs e) e-Cancel = !DoModified();(5) 编译运行并测试。七、显示菜单项的功能提示信息(1)为“文件(&F)”菜单,添加MouseHover事件On_MouseHover,

34、其下所有菜单都添加同样事件,函数相同:private: System:Void On_MouseHover(System:Object sender, System:EventArgs e) if ( sender = this- )/ “文件”菜单项this-toolStripStatusLabel1-Text =L文件菜单用于常规的文件操作;if ( sender = this- )/ “新建”菜单项this-toolStripStatusLabel1-Text = L新建一个文本文件;if ( sender = this- )/ “打开”菜单项this-toolStripStatusLa

35、bel1-Text = L打开一个文本文件;if ( sender = this- )/ “保存”菜单项this-toolStripStatusLabel1-Text =L保存文本文件中的内容; if ( sender = this- )/ “退出”菜单项this-toolStripStatusLabel1-Text = L退出应用程序;(2) 打开窗体设计器,在菜单栏单击,添加MenuDeactivate事件On_MenuDeactivate,代码:private: System:Void On_MenuDeactivate(System:Object sender, System:EventArgs e) this-toolStripStatusLabel1-Text =L就绪;(3)编译运行:

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号