第5章菜单设计.docx
- 文档编号:28367206
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:19
- 大小:215.35KB
第5章菜单设计.docx
《第5章菜单设计.docx》由会员分享,可在线阅读,更多相关《第5章菜单设计.docx(19页珍藏版)》请在冰豆网上搜索。
第5章菜单设计
【例5-1】制作简单记事本的主菜单部分。
简单记事本的完整功能可以实现文本的各种编辑操作,包括存取、格式设置等。
其中的主界面采用下拉式菜单实现,运行结果如图5-4所示(部分显示)。
其中的各菜单项的属性设置如表5-1所示。
这里详细介绍菜单的创建过程。
表5-1简单记事本案例中有关菜单项的属性设置
控件类别
名称(Name属性)
其它属性
属性值
窗体
FrmMain
Text
简单记事本
StartPosition
CenterScreen
主菜单项:
mnuFile
Text
文件(&F)
菜单项
mnuNew
Text
新建(&N)
mnuOpen
Text
打开(&O)
mnuSave
Text
保存(&S)
numSaveAs
Text
另存为(&A)
分隔符
-
-
-
菜单项
mnuOuit
Text
退出(&Q)
主菜单项:
mnuEdit
Text
编辑(&X)
菜单项
mnuCancel
Text
撤销(&A)
分隔符
-
-
-
菜单项
mnuCut
Text
剪切(&E)
mnuCopy
Text
复制(&C)
mnuPaste
Text
粘贴(&P)
主菜单项:
mnuFormat
Text
格式(&M)
菜单项
mnuAuto
Text
自动换行(&R)
Check
True
mnuFont
Text
字体(&P)
主菜单项:
mnuView
Text
查看(&V)
菜单项
mnuTool
Text
工具栏(&R)
Check
True
mnuStatus
Text
状态栏(&S)
Check
True
主菜单项:
mnuHelp
Text
帮助(&H)
菜单项:
mnuAbout
Text
关于记事本(&A)
(1)创建新项目,命名为SimpleNote。
(2)在该窗体上添加一个MenuStrip控件。
此时,位于窗体下面的专用面板中会出现如图5-2(a)所示的图标,同时在窗体的左上角会出现一个高亮显示的方框,方框内标有“请在此处键入”,如图5-5(a)所示。
图5-4简单记事本主菜单设计结果
(3)单击方框,方框内变为空白,此时即可输入该菜单项的显示文本(即Text属性的属性值),同时在其下方和右侧各出现一个方框,均标有“请在此处键入”,此时如图5-5(b)所示。
(a)(b)
图5-5下拉式菜单设计过程
(4)按表5-1所示,逐项设置各主菜单项及菜单项的显示文本。
(5)其中的分隔线设置方法如图5-6所示,在上方要插入分隔线的菜单项上单击鼠标右键,从弹出的快捷菜单中选择“插入”→“Separator”即可。
图5-6在菜单项中插入分隔线
(6)为各菜单项设置适当的图标。
设置的具体方法可以通过“属性”窗口的Image属性右侧的
按钮,或使用快捷菜单中的“设置图像”命令(可参看图5-6中快捷菜单的第2项“设置图像”)。
这两种方法都将弹出“选择资源”对话框,如图5-7所示。
此时,即可通过“导入”按钮打开“打开文件”对话框后选择适当的图片文件,确定后即导入了所选文件。
图5-7“选择资源”对话框
【例5-2】接例5-1,继续制作简单记事本的工具栏部分。
工具栏中设置了主菜单中较常用的命令的对应工具,以方便用户操作,结果如图5-8所示。
下面详细介绍其创建过程。
图5-8工具栏设置结果
(1)在窗体上添加ToolStrip控件。
此时,位于窗体下面的专用面板中会出现一个ToolStrip控件图标,同时在窗体的左上角菜单栏的下方会出现一个工具栏结构,如图5-9所示。
图5-9工具栏设置框
(2)为工具栏结构添加“项”,也就是设置ToolStrip控件的Items属性。
可使用以下2种方法:
①通过“属性”窗口中Items属性旁边的
按钮,打开“项集合编辑器”,如图5-10所示。
在该“编辑框”中添加“项”并设置相应的各属性值。
图5-10项集合编辑器
②通过“快捷菜单”进行设置,如图5-11所示。
图5-11快捷菜单
分别添加7个Button项,并为每个项设置适当的图标,图标的设置方法可使用快捷菜单,具体可参见菜单项的图标设置方法。
最后结果如图5-8所示。
【例5-3】接例5-2,继续制作简单记事本的状态栏部分。
在状态栏上显示“就绪”,并显示系统时间。
(1)在窗体上添加StatusStrip控件。
此时,位于窗体下面的专用面板中会出现一个StatusStrip控件图标,同时在窗体的最底端会出现一个状态栏结构,如图5-12所示。
图5-12添加状态栏结果
(2)参照“工具栏”添加“项”的方法添加2个标签项,并设置其Text属性,结果如图5-13所示。
图5-13添加状态栏结果
【例5-4】制作一个简单的上下文菜单,为用户提供一个对多行文本框中的文本进行各种编辑操作的快捷操作方式。
在窗体上创建一个ContextMenuStrip控件,命名为CtxMenuEdit,并创建各菜单项,其过程与下拉式菜单基本一致,这里不再重复,创建结果如图5-14所示。
图5-14上下文菜单创建结果
【例5-5】完成简单记事本的其余部分。
要完成整个记事本的全部功能,除以上控件外,还需要一些其它控件,包括接收文本录入的多行文本框,用于打开和保存文件的各种对话框以及在状态栏中显示时间的定时器控件等,具体列入表5-2中,按表进行各属性设置。
在所有的界面设计完成后,应进行相关控件的相关代码设计。
表5-2简单记事本案例中其它控件及属性设置
控件类别
名称(Name属性)
其它属性
属性值
多行文本框
RichTextBox1
Anch
Left,Right,Top,Bottom
ContextMenuStrip
CtxMenuEdit
打开文件对话框
OFD
Filter
“rtf文件|*.rtf|所有文件|*.*”
保存文件对话框
SFD
FileName
“无标题”
Filter
“rtf文件|*.rtf|所有文件|*.*”
字体对话框
FD
-
-
定时器
Tlmer1
Interval
1000
1.全局变量设置及主窗体初始化
首先为整个项目建立一个布尔型的全局变量bool,用于表示记事本文本框中的内容与磁盘文件的关系。
初始时,该变量为“False”,表示是新建文件。
如果是磁盘打开的文件,就将该变量的值变为“True”。
这样,每个模块都可以根据此变量的值对文件进行相应的操作。
另外,当主窗体调入时应处理状态栏的显示信息。
具体代码如下:
PublicClassFrmMain
DimboolAsBoolean=False
PrivateSubFrmMain_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load
RichTextBox1.Focus()
ToolStripStatusLabel1.Text="就绪"
ToolStripStatusLabel2.Text=Now()'把系统当前时间显示在状态栏
EndSub
EndClass
2.下拉菜单控件MenuStrip1的各菜单项代码设计
【新建】菜单项:
单击【新建】菜单项,如果当前正在编辑的文件是从磁盘打开的,并且已经修改过,则要按OpenFileDialog控件的路径保存文件。
如果是新建的文件并且内容不为空,则要调用SaveFileDialog控件来保存文件,以下代码以菜单项为例:
PrivateSubMenuNew_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMenuNew.Click
Ifbool=TrueOrTrim(RichTextBox1.Text)<>NothingThen
DimresultAsInteger
result=MsgBox("文档尚未保存,是否继续?
",MsgBoxStyle.YesNoCancel)
SelectCaseresult
Case2
ExitSub
Case6
Ifbool=TrueThen
RichTextBox1.SaveFile(OFD.FileName)
ElseIfSFD.ShowDialog=Windows.Forms.DialogResult.OKThen
RichTextBox1.SaveFile(SFD.FileName)
Else
ExitSub
EndIf
EndSelect
EndIf
bool=False
RichTextBox1.Clear()
EndSub
EndClass
【打开】菜单项:
单击此菜单项时,如果是要从磁盘或从其他设备打开扩展名为“*.rtf"”的文件,同样要像新建菜单一样作出判断,所不同的是判断后调用控件打开文件。
以下代码以菜单项为例:
PrivateSubMenuOpen_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMenuOpen.Click
Try
Ifbool=TrueOrTrim(RichTextBox1.Text)<>NothingThen
DimresultAsInteger
result=MsgBox("文档尚未保存,是否继续?
",MsgBoxStyle.YesNoCancel)
SelectCaseresult'根据结果选择要做的工作
Case2'按下“取消”按钮
ExitSub
Case6'按下“确定”按钮
Ifbool=TrueThen'判断是否从已存在的文件打开的还是新建的
RichTextBox1.SaveFile(OFD.FileName)'按路径保存文件
ElseIfSFD.ShowDialog=Windows.Forms.DialogResult.OKThen'弹出对话框保存文件
RichTextBox1.SaveFile(SFD.FileName)
Else
ExitSub
EndIf
EndSelect
EndIf
OFD.RestoreDirectory=True
IfOFD.ShowDialog=Windows.Forms.DialogResult.OKAndOFD.FileName<>""Then
RichTextBox1.LoadFile(OFD.FileName)'
bool=True
EndIf
CatchexAsException
EndTry
EndSub
【保存】菜单项:
单击此菜单项是保存文本框的内容,要判断文本框的内容是从磁盘调入的还是新建的文件,如果是前者则判断是否有更改,如有更改就按OpenFileDialog控件对话框的路径保存文件,否则不作处理退出。
如果是新建的文件就调用SaveFileDialog控件保存文件,保存后把bool变量改为“True”,同时把SaveFileDialog控件的文件路径赋给控件。
这样下次打开文件时,文件路径默认为刚刚保存了文件的路径。
以下代码以菜单项为例:
PrivateSubMenuSave_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMenuSave.Click
Try'判断是新建文件还是从磁盘打开的文件
Ifbool=TrueAndRichTextBox1.Modified=TrueThen
RichTextBox1.SaveFile(OFD.FileName)'保存文件
ExitSub
EndIf
Ifbool=FalseAndTrim(RichTextBox1.Text)<>NothingThen'如果文件不为空就调用’保存”’对话框
IfSFD.ShowDialog=Windows.Forms.DialogResult.OKThen
RichTextBox1.SaveFile(SFD.FileName)
bool=True
OFD.FileName=SFD.FileName'把保存的路径赋给打开文件的路径
EndIf
EndIf
CatchexAsException'异常处理
MsgBox(ex.Message)
EndTry
EndSubEndSub
【另保为】菜单项:
单击这个菜单项不用作出判断,直接调用SaveFileDialog控件保存。
代码如下:
PrivateSubMenuSaveAs_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMenuSaveAs.Click
IfSFD.ShowDialog=Windows.Forms.DialogResult.OKThen
RichTextBox1.SaveFile(SFD.FileName)
EndIf
EndSub
【退出】菜单项:
PrivateSubMenuQuit_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMenuQuit.Click
Ifbool=TrueOrTrim(RichTextBox1.Text)<>NothingThen
DimresultAsInteger
result=MsgBox("文档尚未保存,是否继续?
",MsgBoxStyle.YesNoCancel)
SelectCaseresult
Case2'按下“取消”按钮
ExitSub
Case6'按下“确定”按钮
Ifbool=TrueThen
RichTextBox1.SaveFile(OFD.FileName)
ElseIfSFD.ShowDialog=Windows.Forms.DialogResult.OKThen
RichTextBox1.SaveFile(SFD.FileName)
Else
ExitSub
EndIf
Case4'按下"否"按钮
Application.Exit()
EndSelect
bool=False
RichTextBox1.Clear()
Else
Application.Exit()
EndIf
EndSub
【编辑】主菜单项
这项菜单主要针对文本的操作,当选择这个菜单时,需要作出判断,哪些菜单可用,哪些不可用。
代码如下:
PrivateSubMenuEdit_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesMenuEdit.Click
IfClipboard.GetDataObject().GetFormats(False).Length>0Then
MenuPaste.Enabled=True
Else
MenuPaste.Enabled=False
EndIf
'判断“剪切”菜单和“复制”菜单是否可用
IfRichTextBox1.SelectedText=NothingThen
MenuCut.Enabled=False
MenuCopy.Enabled=False
Else
MenuCut.Enabled=True
MenuCopy.Enabled=True
EndIf
'判断“撤消”按钮是否可用
IfRichTextBox1.UndoActionName=""Then
MenuCancel.Enabled=False
Else
MenuCancel.Enabled=True
EndIf
EndSub
【撤消】菜单项:
此菜单项是撤消最近一次对文本框的操作。
代码如下:
PrivateSubMenuCancel_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMenuCancel.Click
RichTextBox1.Undo()
EndSub
【剪切】菜单项:
此菜单项是把文本框中选中的内容剪切出来,放到剪贴板。
代码如下:
PrivateSubMenuCut_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMenuCut.Click
RichTextBox1.Cut()
EndSub
【复制】菜单项:
此菜单项是把文本框中选中的内容复制到剪贴板。
代码如下:
PrivateSubMenuCopy_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMenuCopy.Click
RichTextBox1.Copy()
EndSub
【粘贴】菜单项:
此菜单项是在光标处追加剪贴板的内容,或用剪贴板的内容替换选中的文本。
代码如下:
PrivateSubMenuPaste_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMenuPaste.Click
RichTextBox1.Paste()
EndSub
【自动换行】菜单项:
此菜单项被选择时,文本的内容按照窗体的宽度自动换行。
如果此菜单项不被选择时,文本只按照回车符来换行。
此功能的实现靠Check属性实现,初始时为自动换行,即Check属性的初始值为True,参见表5-1。
代码如下:
PrivateSubMenuAutoR_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMenuAutoR.Click
IfMenuAutoR.Checked=FalseThen
MenuAutoR.Checked=True'使菜单显示选中
RichTextBox1.WordWrap=True'设置自动换行
Else
MenuAutoR.Checked=False
RichTextBox1.WordWrap=False
EndIf
EndSub
【字体】菜单项:
此菜单项是用作设置字体的大小、颜色等属性。
要完成此菜单的功能需要调用FontDialog控件来设置字体,而且还需要改变字体的颜色。
代码如下:
PrivateSubMenuFont_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMenuFont.Click
FD.ShowColor=True'显示颜色选择
IfFD.ShowDialog=Windows.Forms.DialogResult.OKThen
RichTextBox1.SelectionColor=FD.Color'设置字体颜色
RichTextBox1.SelectionFont=FD.Font'设置字体格式
EndIf
EndSub
【状态栏】菜单项:
该菜单项控制状态栏的显示与隐藏,窗体初次运行时状态栏处于显示状态。
如果隐藏状态栏后,文本框与窗体边缘之间就出现了与状态栏高度相同的空隙。
所以要把文本框的高度加宽。
而当状态栏由隐藏变为显示时,就要减少文本框的高度。
具体代码如下:
PrivateSubMenuStatus_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMenuStatus.Click
IfMenuStatus.Checked=TrueThen
MenuStatus.Checked=False'取消选择此菜单
StatusStrip1.Visible=False'状态栏不可见
RichTextBox1.Height+=StatusStrip1.Height'增加状态栏的高度
Else
MenuStatus.Checked=True'选择此菜单
StatusStrip1.Visible=True'状态栏可见
RichTextBox1.Height-=StatusStrip1.Height'减少状态栏的高度
EndIf
EndSub
【工具栏】菜单项:
隐藏工具栏与状态栏一样,要增加文本框的高度,显示工具栏要减少文本框的高度。
所不同的是还要改变文本框的位置。
具体代码如下:
PrivateSubMenuTool_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMenuTool.Click
DimMyPointAsPoint
IfMenuTool.Checked=TrueThen
MyPoint=NewPoint(0,25)
MenuTool.Checked=False'不选择显示工具栏
ToolStrip1.Visible=False'使工具栏不可见
RichTextBox1.Location=MyPoint
RichTextBox1.Height+=ToolStrip1.Height'增加状态栏的高度
Else
MyPoint=NewPoint(0,50)
MenuTool.Checked=True'选择显示工具栏
ToolStrip1.Visible=True'使工具栏可见
RichTextBox1.Location=MyPoint
RichTextBox1.Height-=ToolStrip1.Height'增加状态栏的高度
EndIf
EndSub
【帮助】菜单项:
PrivateSubMenuAbout_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMenuAbout.Click
FrmAbout.ShowDialog()
EndSub
【关于记事本】菜单项:
该菜单项调用一个窗体简单
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第5章 菜单设计 菜单 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)