使用菜单工具栏来改变窗口的大小与颜色15页word资料.docx
- 文档编号:27600552
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:15
- 大小:19.30KB
使用菜单工具栏来改变窗口的大小与颜色15页word资料.docx
《使用菜单工具栏来改变窗口的大小与颜色15页word资料.docx》由会员分享,可在线阅读,更多相关《使用菜单工具栏来改变窗口的大小与颜色15页word资料.docx(15页珍藏版)》请在冰豆网上搜索。
使用菜单工具栏来改变窗口的大小与颜色15页word资料
使用菜单、工具栏来改变窗口的大小与颜色
10、WinForms高级编程
目标
创建一个更改窗口的大小与颜色的应用程序。
创建一个单文档的文本编辑器应用程序。
指导教师讲解阶段目标
第一部分指导(60分钟)
练习1:
使用菜单、工具栏来改变窗口的大小与颜色
问题
主菜单、快捷菜单、工具栏和状态栏的应用实例
指导教师讲解问题说明
用户在窗体上单击右键,弹出图示的快捷菜单。
执行其中的颜色命令可产生与主菜单中相应命令等效的结果。
某命令执行时菜单项左侧带有"?
"标记。
再次执行该菜单命令取消相应的颜色及菜单项左侧的"?
"标记,将颜色恢复为背景色。
执行快捷菜单中的"红"命令,然后再次打开快捷菜单后,如图1.2所示。
图1.1默认窗体背景色
图1.2红色背景色
分析
指导教师分析解题思路
添加工具栏和状态栏后,窗体的界面设计如图1.3所示。
主要用到了这些控件:
MenuStrip,ContextMenuStrip,ToolStrip,StatusStrip。
图1.3窗体设计界面
推荐步骤:
(1)创建Windows应用项目。
(2)按照设计界面添加相应的控件,并在主菜单和快捷菜单中添加相应的菜单项;并添加相应的点击处理事件函数。
(3)完整的代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystemponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
namespacemenuToolStatus{
publicpartialclassForm1:
Form
publicForm1()
InitializeComponent();
privatevoidMenuItem_default_Click(objectsender,EventArgse)
this.BackColor=Control.DefaultBackColor;
MenuItem_default.CheckState=CheckState.Indeterminate;
cMenuItem_default.CheckState=CheckState.Indeterminate;
MenuItem_blue.Checked=MenuItem_green.Checked=MenuItem_red.Checked=false;
cMenuItem_blue.Checked=cMenuItem_green.Checked=cMenuItem_red.Checked=false;
StatusLabel3.Text="默认颜色";
privatevoidcMenuItem_default_Click(objectsender,EventArgse)
MenuItem_default_Click(sender,e);
privatevoidMenuItem_red_Click(objectsender,EventArgse)
MenuItem_red.Checked=!
MenuItem_red.Checked;
if(MenuItem_red.Checked)
this.BackColor=Color.Red;
MenuItem_red.CheckState=CheckState.Indeterminate;
cMenuItem_red.CheckState=CheckState.Indeterminate;
MenuItem_blue.Checked=MenuItem_green.Checked=MenuItem_default.Checked=
false;
cMenuItem_blue.Checked=cMenuItem_green.Checked=cMenuItem_default.Checked=
false;
StatusLabel3.Text="红色";
else
this.BackColor=Control.DefaultBackColor;
MenuItem_default.CheckState=CheckState.Indeterminate;
cMenuItem_default.CheckState=CheckState.Indeterminate;
StatusLabel3.Text="默认颜色";
privatevoidcMenuItem_red_Click(objectsender,EventArgse)
MenuItem_red_Click(sender,e);
privatevoidMenuItem_green_Click(objectsender,EventArgse)
MenuItem_green.Checked=!
MenuItem_green.Checked;
if(MenuItem_green.Checked)
this.BackColor=Color.Green;
MenuItem_green.CheckState=CheckState.Indeterminate;
cMenuItem_green.CheckState=CheckState.Indeterminate;
MenuItem_blue.Checked=MenuItem_red.Checked=MenuItem_default.Checked=
false;
cMenuItem_blue.Checked=cMenuItem_red.Checked=cMenuItem_default.Checked=
false;
StatusLabel3.Text="绿色";
else
this.BackColor=Control.DefaultBackColor;
MenuItem_default.CheckState=CheckState.Indeterminate;
cMenuItem_default.CheckState=CheckState.Indeterminate;
StatusLabel3.Text="默认颜色";
privatevoidMenuItem_blue_Click(objectsender,EventArgse)
MenuItem_blue.Checked=!
MenuItem_blue.Checked;
if(MenuItem_blue.Checked)
this.BackColor=Color.Blue;
MenuItem_blue.CheckState=CheckState.Indeterminate;
cMenuItem_blue.CheckState=CheckState.Indeterminate;
MenuItem_red.Checked=MenuItem_green.Checked=MenuItem_default.Checked=
false;
cMenuItem_red.Checked=cMenuItem_green.Checked=cMenuItem_default.Checked=
false;
StatusLabel3.Text="蓝色";
else
this.BackColor=Control.DefaultBackColor;
MenuItem_default.CheckState=CheckState.Indeterminate;
cMenuItem_default.CheckState=CheckState.Indeterminate;
StatusLabel3.Text="默认颜色";
privatevoidcMenuItem_green_Click(objectsender,EventArgse)
MenuItem_green_Click(sender,e);
privatevoidcMenuItem_blue_Click(objectsender,EventArgse)
MenuItem_blue_Click(sender,e);
privatevoidMenuItem_unTran_Click(objectsender,EventArgse)
this.TransparencyKey=this.BackColor;
this.Opacity=1.0;
privatevoidMenuItem_transl_Click(objectsender,EventArgse)
this.TransparencyKey=this.BackColor;
this.Opacity=0.5;
privatevoidtsBtn_big_Click(objectsender,EventArgse)
this.Width=800;
this.Height=600;
StatusLabel1.Text="800x600像素";
privatevoidtsBtn_middle_Click(objectsender,EventArgse)
this.Width=600;
this.Height=480;
StatusLabel1.Text="600x480像素";
privatevoidtsBtn_small_Click(objectsender,EventArgse)
this.Width=400;
this.Height=360;
StatusLabel1.Text="400x360像素";
(4)通过从菜单中选择"生成"→"生成解决方案",来生成该解决方案。
(5)通过从菜单中选择"调试"→"开始执行(不调试)"选项来执行此应用程序。
程序运行效果图
指导教师检查学生进度
练习2:
创建一个单文档的文本编辑器应用程序
问题
请编写一个简单的单文档文本编辑器,一次只能打开一个文件,如果要打开另一个文件,必须关闭当前打开的文件,微软的写字板程序就是单文档字处理程序。
指导教师讲解问题说明
使用RichTextBox可以建立一个文本编辑器,它和TextBox的一些属性、事件和方法相同,其新增属性、事件和方法如下:
属性Dock:
属性SelectedText、SelectionLength、SelectionStart:
属性SelectionFont:
属性SelectionColor:
属性Lines:
属性Modified:
事件SelectionChange:
事件TextChanged:
方法Clear():
方法Copy()、Cut()、Paste():
方法SelectAll():
方法Find():
方法SaveFile()和LoadFile():
方法Undo():
方法Redo():
分析
指导教师分析解题思路
该问题需要开发一个窗体,要求对用户的简历信息进行登记。
该应用程序主要用到按钮、文本输入框、图片显示框、下拉列表框和列表框等控件。
推荐步骤:
(1)新建一个名为"TxtEditor"的基于Windows应用程序的项目。
(2)剪贴板功能:
放RichTextBox控件到窗体。
属性Name=richTextBox1,Dock=Fill,Text=""。
添加相应的菜单项,各菜单项的事件处理函数如下:
privatevoidmenuItemEditCut_Click(objectsender,EventArgse)
richTextBox1.Cut();//剪切
privatevoidmenuItemEditCopy_Click(objectsender,EventArgse)
richTextBox1.Copy();//拷贝
privatevoidmenuItemEditPaste_Click(objectsender,EventArgse)
richTextBox1.Paste();//粘贴
privatevoidmenuItemEditUndo_Click(objectsender,EventArgse)
richTextBox1.Undo();//撤销
privatevoidmenuItemEditRedo_Click(objectsender,EventArgse)
richTextBox1.Redo();//恢复
(3)文本编辑器都应具有文件存取功能,菜单顶级菜单项"文件"的弹出菜单中一般包括如下菜单项:
新建、打开、关闭、保存和另存为等。
把OpenFileDialog和SaveFileDialog控件放到窗体中。
为菜单增加顶级菜单项:
文件,为其弹出菜单增加菜单项:
新建、打开.、保存.、另存为.、退出。
修改这些菜单项的Name属性分别为:
mainMenuFile、menuItemFileNew、menuItemFileOpen、menuItemFileSave、menuItemFileSaveAs、menuItemFileExit。
为Form1类中定义变量:
strings_FileName="",记录当前编辑的文件名。
privatevoidmenuItemFileNew_Click(objectsender,EventArgse)
if(!
IfSaveOldFile())//如果返回false,本次操作取消
return;
richTextBox1.Text="";//或richTextBox1.Clear();
s_FileName="";//新建文件没有文件名。
privatevoidmenuItemFileOpen_Click(objectsender,EventArgse)
if(!
IfSaveOldFile())//如果返回false,本次操作取消
return;
if(openFileDialog1.ShowDialog()==DialogResult.OK)
s_FileName=openFileDialog1.FileName;
richTextBox1.LoadFile(openFileDialog1.FileName,
RichTextBoxStreamType.PlainText);
privatevoidmenuItemFileSaveAs_Click(objectsender,EventArgse)
if(saveFileDialog1.ShowDialog()==DialogResult.OK)
s_FileName=saveFileDialog1.FileName;
richTextBox1.SaveFilesaveFileDialog1.FileName,RichTextBoxStreamType.PlainText);
bSave=false;
}//注意存取文件类型应一致。
privatevoidmenuItemFileSave_Click(objectsender,EventArgse)
if(s_FileName.Length!
=0)
bSave=false;
richTextBox1.SaveFile(s_FileName,RichTextBoxStreamType.PlainText);
elsemenuItemFileSaveAs_Click(sender,e);//调用另存为菜单项事件处理函数
privatevoidmenuItemFileExit_Click(objectsender,EventArgse)
Close();
(4)修改字体
为修改使用的字体,可打开字体对话框FontDialog,选择指定字体。
可以按两种方式修改字体,如果未选中文本,表示以后键入的字符将按选定字体输入。
如果选中文本,则仅修改选定文本的字体。
修改字符颜色也根据同样原则。
放FontDialog控件到窗体,属性Name=fontDialog1。
为菜单增加顶级菜单项:
格式,属性Name为mainMenuModel,为其弹出菜单增加菜单项:
字体,属性Name为menuItemModelFont,为菜单"格式|字体"菜单项增加单击事件处理函数如下:
privatevoidmenuItemModelFont_Click(objectsender,EventArgse)
if(fontDialog1.ShowDialog()==DialogResult.OK)
richTextBox1.SelectionFont=fontDialog1.Font;
(5)About对话框
添加一个窗体,修改formAbout窗体属性StartPosition=CenterParent,修改属性MaximizeBox=False,MinimizeBox=False属性FormBorderStyle=FixedDialog,运行界面如下:
标题为"确定"按钮单击事件处理函数如下:
privatevoidbutton1_Click(objectsender,EventArgse)
Close();
为菜单增加顶级菜单项:
帮助,为其弹出菜单增加标题为"关于…"的菜单项,属性Name为menuItemAbout。
菜单"帮助|关于…"菜单项单击事件处理函数如下:
privatevoidmenuItemAbout_Click(objectsender,EventArgse)
formAboutAboutDialog=newformAbout();
AboutDialog.ShowDialog(this);//打开模式对话框
//注意不能使用Show()函数,它打开非模式对话框
(6)文本编辑器查找替换功能
建立新窗体,窗体文件名称为formFindReplace.cs,作为"查找替换"对话框。
窗体类名也为formFindReplace,为formFindReplace类增加变量:
Form1MainForm1;属性StartPosition=CenterParent,MaximizeBox=False,MinimizeBox=False,FormBorderStyle=FixedDialog,Text="查找和替换",对话框界面如图:
修改formFindReplace类构造函数如下,增加的参数form1是主窗体属性Name的值。
publicformFindReplace(Form1form1)
InitializeComponent();
MainForm1=form1;
//有了Form1引用,可以在formFindReplace类中调用Form1类的公有方法
查找替换对话框中标题为"查找下一个"按钮单击事件函数如下:
privatevoidbutton1_Click(objectsender,EventArgse)
if(textBox1.Text.Length!
=0)//如果查找字符串不为空,调用主窗体查找方法
MainForm1.FindRichTextBoxString(textBox1.Text);
elseMessageBox.Show("查找字符串不能为空","提示",MessageBoxButtons.OK);
查找替换对话框中标题为"替换查到字符"按钮单击事件函数如下:
privatevoidbutton2_Click(objectsender,EventArgse)
if(textBox2.Text.Length!
=0)//如果替换字符串不为空,调用主窗体替换方法
MainForm1.ReplaceRichTextBoxString(textBox2.Text);//调用上步增加的替换方法
elseMessageBox.Show("替换字符串不能为空","提示",MessageBoxButtons.OK);
为Form1类增加变量:
intFindPostion=0,该变量用来记录下一次查找的开始位置。
为Form1窗体菜单的"编辑"顶级菜单项的弹出菜单增加菜单项:
查找和替换,属性Name为menuItemFindReplace。
"查找和替换"菜单项单击事件处理函数如下:
privatevoidmenuItemFindReplace_Click(objectsender,EventArgse)
FindPostion=0;//下句中的this是Form1类对象引用
formFindReplaceFindReplaceDialog=newformFindReplace(this);
FindReplaceDialog.Show();//打开非模式对话框使用Show()方法
定义FindRichTextBoxString方法:
publicvoidFindRichTextBoxString(stringFindString)//查找方法
if(FindPostion=richTextBox1.Text.Length)//如已查到文本底部,提示用户
MessageBox.Show("已到文本底部,再次查找将从文本开始处查找","提示",
MessageBoxButtons.OK);
FindPostion=0;//下次查找的开始位置
return;
}//用Find方法查找,返回找到的位置,返回-1,表示未找到,参数是要找的字符串
//参数是查找的开始位置,参数是查找的一些选项,如大小写是否匹配,查找方向等
FindPostion=richTextBox1.Find(FindString,
FindPostion,RichTextBoxFinds.MatchCase);
if(FindPostion==-1)//-1表示未找到匹配字符串,提示用户
MessageBox.Show("未找到匹配字符串,再次查找将从文本开始处查找","提示",
MessageBoxButtons.OK);
FindPostion=0;//下次查找的开始位置
else//找到匹配字符串
richTextBox1.Focus();//主窗体成为注视窗口
FindPostion+=FindString.Length;
}//下次查找的开始位置在此次找到字符串之后
替换字符串的方法:
publicvoidReplaceRichTextBoxString(stringReplaceString)//替换方法
if(richTextBox1.SelectedText.Length!
=0)//如果选定了被替换字符串
richTextBox1.SelectedText=ReplaceString;//替换被选定的字符串
(7)提示保存已被修改的文件
为Form1类增加一个bool变量bSave=false作为标记,用来跟踪控件RichTextBox中的文本内容是否被修改。
在程序开始运行、建立和打开一个新文件后,bSave=false,表示如果关闭当前文件,不必提示用户保存当前文件。
当RichTextBox控件中的文本被修改,将激活RichTextBox控件TextChanged事件,在该事件处理函数中,使bSave=true,表示关闭当前文件前,要询问用户是否保存当前已被修改的文件。
首先在主窗体Form1类中增加一个函数,其功能是如果检查到当前文件已被修改,用对话框询问用户是否保存当前文件,根据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 使用 菜单 工具栏 改变 窗口 大小 颜色 15 word 资料