第五章 Windows窗体界面设计 5.1 鼠标事件与键盘事件 5.2 Windows窗体基本控件 5.3 菜单与工具栏

Slides:



Advertisements
Similar presentations
計算機程式及實習 Computer Program Design and Experiment) 期末報告 ppt 南台科技大學機械工程系 姓名 : 蔡中銘 學號 :4A 授課老師 : 謝慶存大帥哥.
Advertisements

第七章 常用控件 7.1 控件概述 7.2 常用内部控件 本章要求 返回目录 第七章 常用控件 (Common Control)
第二章 VB的编程机制 【授课时间】第3周,第2次课 【授课题目】 2.1 面向对象程序设计概述 2.2 VB中的对象
計算機概論 第4章 基本視窗程式應用 4-1 程式語言簡介 4-2 演算法與流程圖 4-3 視窗程式語言設計 4-4 資料結構.
C#程式設計 第二部分 第5-6章 C# 程式設計 - 南華大學資管系.
計算機程式及實習 期末報告 題目:商店結帳系統
第 9 章 表单控件的使用 本章提要:VFP表单控件工具栏上的21个基类控件及表单集,它们的常用属性、方法、事件及主要功能等。为叙述的方便,将VFP的基类控件及表单集按主要功能分为五类: 1.输出类:标签、图像、线条、形状。 2.输入类:文本框、编辑框、微调控件、列表框、组合框。 3.控制类:命令按钮、命令按钮组、复选框、选项按钮组、计时器。
WINDOWS98资源管理器教案 一、   教学目标 1、知识目标:掌握资源管理器的结构;通过资源管理器掌握利用左键和右键的拖动完成文件及文件夹的复制和移动这两个操作;能分别使用左键和右键进行这两种操作,且能区分左键和右键的不同。
南台科技大學 機械工程系 車輛一甲 學號:4A 學生:黃信成 老師:謝慶存
Visual Basic 2005學習範本 第5章 選擇結構.
1.了解VB6.0的功能特点 、集成环境。 2.理解面向对象程序设计的几个概念。 3.掌握VB应用程序设计的步骤。
第 5 章 流程控制 (一): 條件分支.
14 繪圖與動畫 [我的小畫家][打磚塊遊戲] 14-1 繪圖的基礎 14-2 滑鼠事件與基本繪圖 14-3 在Bitmap物件繪圖
《ASP.NET数据库网站设计教程(C#版)》
第6章 HTML控件和Web服务器控件 本章讲述的主要内容 6.1 ASP.NET控件概述 6.2 标准服务器端控件 6.3 数据验证控件
网 络 课 程 马 鞍 学 网 络 山 课 程 大 络 网 Visual Basic程序设计 第 一 讲 最容易接受的编程语言
Visual Basic.NET 程序设计语言课程内容
《计算机网络技术》 asp.net 程序设计 文本类控件 笪静.
題目:台灣客運 南臺科技大學 機械工程系 班級:奈米一乙 學號:4A 姓名:蔡政堯 授課教師:謝慶存
C# 程式設計 第一部分 第1-4章 C# 程式設計 - 南華大學資管系.
程式簡介、VB、物件導向 國立北門高中 林明璋.
第十章 進階輸出入元件(一) StringGrid 10-1 核對框(CheckBox)
進階輸出入元件(一) 本書第三章已介紹Form 、Label 、Edit 及Button 等最基本的輸出入元件, 本章將繼續介紹一些可以提昇輸出入視覺效果的元件, 例如CheckBox 、RadioButton 及RadioGroup 等17 個進階元件, 學習本章將可提昇使用介面的親和性。 核對框(CheckBox)
課程名稱:程式設計 授課老師:________
第九章 常用控制項(ㄧ) 資訊教育研究室 編著 注意:本投影片僅供上課使用,非經同意,請勿散播或轉載。
Chapter 5 進階伺服器控制項.
Chapter 1 複習.
第13章 WinForms基础知识.
基础综合 C++ Builder 显示与输入接口
程式語言 -Visual Basic 變數、常數與資料型態.
第9章 Windows窗体应用程序设计 9.1 窗体设计 9.2 常用的控件设计 9.3 多个窗体之间的数据传递 9.4 多文档窗体
第18章 B4J的跨平台應用程式開發 18-1 B4J的GUI設計工具與介面控制項 18-2 使用B4J的介面控制項
Visual Basic程序设计基础 计算机科学学院.
第10章 視窗應用程式的工具列與功能表.
委派與執行緒 建國科技大學 資管系 饒瑞佶.
湖北职院计科系.
第十二章 事件 12-1 KeyPress 12-2 KeyDown及KeyUp
移动电子商务 第十二章 Windows Mobile应用案例 倚动软件工厂实验室.
form1 卡拉OK pictureBox1 fish1.bmp pictureBox2 fish2.bmp label1 卡拉OK字幕機
程式設計 Visual Basic簡介 週次:1 建國技術學院 資管系 饒瑞佶 2003年9月17日.
第十二章 Win32環境程式設計 這一章節可以說是本書精華之一,Win32程式設計算是比較複雜的部分,但是我們以最簡單的敘述帶領著大家進入Win32程式設計的殿堂,讓你寫出來的程式具有一定的水準以上。若能將本章與下一章的技巧靈活運用,更能讓大家寫出高階的視窗程式。
視窗程式設計 (Windows Programming)
第12章 繪圖與多媒體 12-1 繪圖的基礎 12-2 繪出文字和圖形 12-3 載入與顯示圖形檔案 12-4 建立多媒體的動畫效果
Ch03 基本輸出入介面設計 視窗程式設計 授課教師:王大瑾.
第四章 命令按钮、标签和文本框 大多数应用程序中都有命令按钮CommandButton控件,用户可以单击按钮执行某项操作。
高等学校计算机基础教育教材 Visual Basic 6.0 程序设计 上海中医药大学现代教育技术中心 计算机教学部 1.
第二章 创建用户界面 本章重点和难点 2.1 基本属性 2.2 创建窗体 2.3 Visual Basic的常用控件 2.4 制作菜单.
第六章 擷取輸入裝置的訊息和事件 鍵盤、滑鼠,是我們最常使用的輸入工具。我們是不是常常希望可以再按下某個按鈕後就可以有哪些功能出現呢?沒錯,這就是這一章節的重點,在第四章,我們提到了有關鍵盤、滑鼠、以及RS-232介面的事件及訊息偵測,讓我們更能掌控電腦週邊的硬體。
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
程式設計 Visual Basic簡介 週次:2 建國技術學院 資管系 饒瑞佶 2003年9月17日.
第4章 視窗應用程式的基本輸出入 4-1 物件基礎程式設計 4-2 表單控制項 4-3 按鈕控制項 4-4 資料輸出的標籤控制項
題目:南台飲料店結帳系統 南台科技大學 機械工程系 車輛一甲 學號:4A
菜单、状态栏和工具栏 菜单 状态栏 工具栏 编写代码 创建用户界面 Debug and Deploy 使用 Visual
VB程序设计语言 主讲教师:王 杨.
VB语言程序设计教程.
Ch 08 陣列 視窗程式設計.
計算機程式及實習 Computer Program Design and Experiment) 期末報告ppt製作 南台科技大學 機械工程系 題目:南台電影城結帳系統 班級 : 車輛一甲 學號 : 4A 授教學生: 阮偉倫 授課老師: 謝慶存.
补充:c#语言基础.
第 12 章 視窗介面進階.
第 11 章 功能表列與工具列的設計 & 第 10 章 檔案.
第4章 ASP.NET服务器控件.
雙按button1,2,3,4 Method 方法/動作 textBox2.Text textBox1 textBox3.Text 轉為數字 c是數字 int c = int.Parse(textBox1.Text) + …; textBox3.Text = c.ToString();
Visual C# 2005程序设计 第1章 Visual C#概述 第2章 C#语法基础 第3章 顺序结构程序设计
Visual Basic 程序设计及应用教程 (6.0版)
Visual C# 程序设计 第1章 Visual C#概述 第2章 C#语法基础 第3章 顺序结构程序设计 第4章 选择结构程序设计
程式設計 Visual Basic簡介 週次:4 建國技術學院 資管系 饒瑞佶 2003年11月1日.
MDI介面建置 建國科技大學 資管系 饒瑞佶.
C# 匿名委派 + Lambda + Func 建國科技大學 資管系 饒瑞佶.
1、复选框和单选按钮 2、框架 3、列表框和组合框 4、滚动条 5、鼠标器事件 6、键盘
MenuStrip by Szeto CY Visual C# 2008.
Presentation transcript:

第五章 Windows窗体界面设计 5.1 鼠标事件与键盘事件 5.2 Windows窗体基本控件 5.3 菜单与工具栏

5.1 鼠标事件与键盘事件 常用鼠标事件 1.Click:单击鼠标左键时触发 2.MouseDoubleClick:双击鼠标左键时触发 3.MouseEnter:鼠标进入控件可见区域时触发 4.MouseMove:鼠标在控件区域内移动时触发 5.MouseLeave:鼠标离开控件可见区域时触发 常用键盘事件 1.KeyDown:按下某个键时触发 2.KeyUp:释放按键时触发 3.KeyPress:释放按键后触发

buttonOK labelDisplay Visible:false textBox1 label1 图5-1 事件驱动的界面设计示例

5.1 鼠标事件与键盘事件(续) 1)textBox1控件 的KeyDown 事件: private void textBox1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Up) MessageBox.Show("您现在按下的是向上箭头!"); } if (e.KeyCode == Keys.F1) MessageBox.Show("您现在按下的是功能键F1!是否需要帮助?"); if (e.Alt == true && e.Shift == true && e.Control==true) MessageBox.Show("您现在按下的是组合键Ctrl+Alt+Shift!");

5.1 鼠标事件与键盘事件(续) if (e.Control == true) { switch (e.KeyCode) case Keys.A: MessageBox.Show("您现在按下的是组合键Ctrl+A!"); break; case Keys.B: MessageBox.Show("您现在按下的是组合键Ctrl+B!"); }

5.1 鼠标事件与键盘事件(续) 2)buttonOK控件的Click事件、MouseEnter事件、MouseLeave事件代码: private void buttonOK_Click(object sender, EventArgs e) { label1.Text = textBox1.Text; } private void buttonOK_MouseEnter(object sender, EventArgs e) labelDisplay.Visible = true; labelDisplay.Text = "按下按钮将文本框中的内容显示于下面!"; private void buttonOK_MouseLeave(object sender, EventArgs e) labelDisplay.Text = "";

5.2 Windows窗体基本控件 5.2.1 控件中常用的属性和方法 1.常用基本属性 5.2.1 控件中常用的属性和方法 1.常用基本属性 1) Name:指定控件的名称,它是控件在当前应用程序中的唯一标识,代码通过该属性来访问控件 2) Enabled:决定控件是否可用,取值为true时可用,取值为false时不可用 3) Font:设置控件上文本的显示形式,是一个复合属性,包括字体名称、字号以及是否为斜体、加粗和下划线等 4) BackColor:设置控件的背景色 5) ForeColor:设置控件的前景色,即控件上文本的颜色 6) Image:指定控件上所要显示的图像

5.2.1 控件中常用的属性和方法(续) 7) Location:定位控件,这是一个复合属性,需要指定控件的左上角相对于其容器左上角的坐标(x,y) 8) Size: 指定控件的高度和宽度,是一个复合属性 9) Text:设置控件上所要显示的文本,如标签、按钮、复选框等控件上的文字 10) Visible:决定控件是否可见,取值为true时可见,取值为false时不可见

2.常用方法 Focus:聚焦方法

5.2.2 TextBox控件 1.文本框控件常用的基本属性 1) Text:表示文本框中显示的内容。 2) MaxLength:表示用户可以在文本框控件中最多键入的字符数,默认值为32767个字符。注意,由于使用的是Unicode字符,所以对中文和英文的字符计数方法是相同的,即一个英文字符的长度为1,一个汉字字符的长度也是1。 3) Multiline:表示是否可以包含多行内容。 4) PasswordChar:用于指定在屏蔽TextBox控件中输入的密码字符时所要使用的符号。

5.2.2 TextBox控件(续) 2. TextBox控件常用的基本事件 1) Enter:表示当前文本框为活动状态时触发的操作。 2) TextChanged:表示文本框中的当前内容(Text属性值)更改时触发的操作。

图5-2 用户信息录入界面 textBoxUser MaxLength:6 textBoxInformation Multiline:true textBoxPassword PasswordChar:“*” buttonOK labelResult Visible:false

5.2.2 TextBox控件(续) 3. 部分代码 1) buttonOK的Click事件代码 private void buttonOK_Click(object sender, EventArgs e) { labelResult.Visible = true; labelResult.Text = string.Format("用户名是:{0}; 密码是:{1}\n输入的资料是:\n{2}", textBoxUser.Text, textBoxPassword.Text, textBoxInformation.Text); }

5.2.2 TextBox控件(续) 2) textBoxPassword和textBoxInformation的TextChanged事件代码 private void textBoxPassword_TextChanged(object sender, EventArgs e) { textBoxUser.ReadOnly = true; } private void textBoxInformation_TextChanged(object sender, EventArgs e) buttonOK.ForeColor = System.Drawing.Color.Red; buttonOK.Size = new System.Drawing.Size(100, 50);

5.2.3 MaskedTextBox控件 自学

5.2.4 RichTextBox控件 自学

5.2.6 CheckedListBox控件 1. CheckedListBox控件常用的基本属性 Items:描述控件对象中的所有项。 MutiColumn:决定是否可以以多列的形式显示各项。在控件对象的指定高度内无法完全显示所有项时可以分为多列,这种情况下若MutiColumn属性值为false,则会在控件对象内出现滚动条。 3) ColumnWidth:当控件对象支持多列时,指定各列所占的宽度。 4) CheckOnClick:决定是否在第一次单击某复选框时即改变其状态。 5) SelectionMode:指示复选框列表控件的可选择性。该属性只有两个可用的值None和One,其中None值表示复选框列表中的所有选项都处于不可选状态;One值则表示复选框列表中的所有选项均可选。

5.2.6 CheckedListBox控件 6) Sorted:表示控件对象中的各项是否按字母的顺序排序显示。 7) CheckedItems:表示控件对象中选中项的集合,该属性是只读的。 8) CheckedIndices:表示控件对象中选中索引的集合。

2. CheckedListBox控件常用的方法 1) SetItemChecked:设置列表中的某个复选框的选中状态。 2) SetSelected:设置列表中的某个复选框的待选状态。

图5-8 课程选择窗体 checkedListBox1 MutiColumn:True Sorted:True CheckOnClick:true buttonOK buttonReference

5.2.7 RadioButton控件 RadioButton控件用于接收用户的选择,它是以单项选择的形式出现,一旦某一个选项被选中,则同组中其他RadioButton按钮的选中状态自动清除。单选按钮是以各自所在的容器来划分组的,如果要在一个Form上创建多个单选按钮组,则需要使用GroupBox或者Panel控件作为容器。 RadioButton控件常用的基本属性 1) Text:表示与控件对象相关联的文本。 2) Checked:表示该控件对象是否被选中。 2. 单选按钮控件常用的基本事件 CheckedChanged:当Checked属性值更改时触发的操作。

radioButton1 radioButton2 radioButton3 Check:false、false、false 图5-9 用户选择窗体 radioButton1 radioButton2 radioButton3 Check:false、false、false textBoxResult ReadOnly:true

5.2.8 ComboBox控件 ComboBox控件由两部分组成:一个文本框和一个列表框。文本框可以用来编辑或者显示当前选中的条目。若列表框隐藏,则单击文本框旁边带有向下箭头的按钮时弹出,使用键盘或者鼠标可以在列表框中快速选择条目。

ComboBox控件常用的基本属性 ① Simple:同时显示文本框和列表框,文本框可以被编辑。 1) DropDownStyle属性:表示组合框的样式, 它有三种选择: ① Simple:同时显示文本框和列表框,文本框可以被编辑。 ② DropDown:显示文本框,隐藏列表框,且文本框可以被编辑。 ③ DropDownList:显示文本框,隐藏列表框,且文本框不可以被编辑。 2) MaxDropDownItems属性:默认打开列表框时所显示的最大条目数,多处的部分以滚动条的方式查看。

2. ComboBox控件常用的事件 SelectedIndexChanged事件:SelectedIndex属性更改后触发的动作。

图5-10 验证文件访问窗体 comboBoxName MaxDropDownItems:5 comboBoxDepartment DropDownStyle: DropDownList richTextBox1 Enable:false buttonAddName buttonOpenFile buttonSaveFile

5.2.8 ComboBox控件(续) 3. 部分代码 1) EditEnable方法代码 private void EditEnable(object sender, EventArgs e) { //由于nameComBox控件可以由用户输入新姓名,判断时不能使用SelectedIndex属性 if (comboBoxName.Text != "" && comboBoxDepartment.SelectedIndex > -1) richTextBox1.Enabled = true; buttonOpenFile.Enabled = true; buttonSaveFile.Enabled = true; } 2) addButtonName的Click事件代码

5.2.8 ComboBox控件(续) private void addButtonName_Click(object sender, EventArgs e) { if (comboBoxName.Text != "") bool newitem = true; //判断当前comboBoxName中用户输入的姓名是否已经存在于下拉列表中 for (int i = 0; i < comboBoxName.Items.Count; i++) string oneitem = Convert.ToString(comboBoxName.Items[i]); if (oneitem == comboBoxName.Text) newitem = false; } //如果用户输入的姓名不在下拉列表中,则添加 if (newitem) comboBoxName.Items.Add(comboBoxName.Text);

5.2.8 ComboBox控件(续) 3) buttonOpenFile和buttonSaveFile的Click事件代码 private void buttonOpenFile_Click(object sender, EventArgs e) { richTextBox1.LoadFile("D:\\source.rtf"); } //保存文件,并清除RTFRichBox中的文本,给出提示信息 private void buttonSaveFile_Click(object sender, EventArgs e) richTextBox1.SaveFile("D:\\source.rtf"); richTextBox1.Clear(); MessageBox.Show("文件保存完毕!"); richTextBox1.Enabled = false; buttonOpenFile.Enabled = false; buttonSaveFile.Enabled = false;

5.2.9 ListBox控件 ListBox控件用于显示一组条目,以便让操作者从中选择一条或者多条,然后进行相应的处理,用法及属性有些类似于CheckedListBox。 1. ListBox控件常用的基本属性 1) Items:描述控件对象中的所有项。 2)MutiColumn:决定是否可以以多列的形式显示各项。

3) SelectionMode:选择项时可以使用的方法,它有四种选择: ① None:不能选择任何条目。 ③ MultiSimple:每次可以选择一个条目或者多个条目,每次单击对应条目即被选中,再次单击取消选中。 ④ MultiExtended:每次可以选择一个条目或者多个条目,仅用鼠标单击各条目时,每次选择一个条目;使用组合键(如Shift或Ctrl)配合时,可以选择多个条目。

4) SelectedIndex:当前选定的条目中从零开始的索引。 5) SelectedItems:获取一个集合,该集合包含所有当前选定条目的从零开始的所有项。 6) Selectedindices:获取一个集合,该集合包含所有当前选定条目的从零开始的所有索引。

5.2.9 ListBox控件(续) 2. ListBox控件常用的事件 SelectedIndexChanged:当SelectedIndex属性值更改时触发。

图5-11 选修课程更改窗体 listBox1 SelectionMode: MultiExtended textBoxAdd buttonDelete buttonDeleteAll buttonAdd

5.2.9 ListBox控件(续) 3. 部分代码 1) buttonDelete的Click事件代码 private void buttonDelete_Click(object sender, EventArgs e) { while (listBox1.SelectedIndex >= 0) listBox1.Items.RemoveAt(listBox1.SelectedIndex); }

5.2.9 ListBox控件(续) 2) buttonAdd的Click事件代码 private void buttonAdd_Click(object sender, EventArgs e) { string addedText = textBoxAdd.Text; if (addedText == "") MessageBox.Show("没有输入所要添加的课程!"); return; } //检查当前所要添加的新课程是否已存在于课程列表中 //若存在给出提示信息;否则添加新项 if(listBox1.Items.Contains(addedText)) MessageBox.Show("课程<" + addedText + ">在列表中已存在!");

5.2.9 ListBox控件(续) else { listBox1.Items.Add(addedText); } textBoxAdd.Clear();

private void buttonDeleteAll_Click(object sender, EventArgs e) { listBox1.Items.Clear(); }

5.2.10 Timer组件 1.Timer组件常用的基本属性 2.Timer组件的事件 1) Enabled:是否启用计时,false表示停止计时,true表示开始计时。 2) Interval:触发Tick事件的间隔时间,以毫秒为单位,默认为100ms。 2.Timer组件的事件 Tick:每隔Interval属性指定的时间都会触发。

labelDisplay myTimer Enabled:false Interval:1000(即1秒) buttonOK 图5-12 时钟显示窗体

5.2.10 Timer组件(续) 3. 部分代码 1) myTimer的Tick事件和buttonOK的Click事件代码: private void myTtimer_Tick(object sender, EventArgs e) { labelDisplay.Text = DateTime.Now.ToLongTimeString(); } 2) buttonOK的Click事件代码: private void buttonOK_Click(object sender, EventArgs e) myTimer.Enabled = !myTimer.Enabled; buttonOK.Text =myTimer.Enabled ? "停止" : "开始";

5.2.11 PictureBox控件 PictureBox控件是用于显示图像的Windows图片框控件。 1) Image:在PictureBox中显示的图片。 2) SizeMode:图片在控件中的显示方式,有五种选择:

① AutoSize:自动调整控件PictureBox大小,使其等于所包含的图片大小。 ② CenterImage:将控件的中心和图片的中心对齐显示。如果控件比图片大,则图片将居中显示。如果图片比控件大,则图片将居于控件中心,而外边缘将被剪裁掉。 ③ Normal:图片被置于控件的左上角。如果图片比控件大,则图片的超出部分被剪裁掉。 ④ StretchImage:控件中的图像被拉伸或收缩,以适合控件的大小,完全占满控件。 ⑤ Zoom:控件中的图片按照比例拉伸或收缩,以适合控件的大小,占满控件的长度或高度。

SizeMode: StretchImage pictureBoxSmall pictureBoxMiddle pictureBoxLarge SizeMode: StretchImage trackBar1 Maximum:150 Minimum:10 Value:75 buttonPause 图5-13 动画演示窗体 buttonContinue buttonStart myTimer

5.2.11 PictureBox控件(续) 2. 部分代码 1) 双击FormPictureBox窗体,添加窗体的Load事件代码。 private void FormPictureBox_Load(object sender, EventArgs e) { this.BackColor = Color.White; myTimer.Interval = myTrackBar.Value; for (int i = 1; i <= 8; i++) bitmap[i - 1] = new Bitmap(Application.StartupPath + @"\images\t" + i.ToString() + ".jpg"); } myTimer.Enabled = false;

5.2.11 PictureBox控件(续) 2) 双击myTimer,添加myTimer_Tick事件代码。 private void myTimer_Tick(object sender, EventArgs e) { num++; int num1 = (num + 1) % 8; int num2 = (num + 2) % 8; int num3 = (num + 3) % 8; pictureBoxSmall.Image = bitmap[num1]; pictureBoxMiddle.Image = bitmap[num2]; pictureBoxLarge.Image = bitmap[num3]; Random r = new Random(); pictureBoxSmall.Left = (pictureBoxSmall.Left + r.Next(onceMove)) % Width; pictureBoxMiddle.Left = (pictureBoxMiddle.Left + r.Next(onceMove)) % Width; pictureBoxLarge.Left = (pictureBoxLarge.Left + r.Next(onceMove)) % Width; }

5.2.11 PictureBox控件(续) 3) myTrackBar_Scroll事件代码: myTimer.Interval = myTrackBar.Value; 4) 三个Button控件对应的Click事件代码: private void buttonStart_Click(object sender, EventArgs e) { myTimer.Enabled = true; } private void buttonPause_Click(object sender, EventArgs e) myTimer.Enabled = false; private void buttonContinue_Click(object sender, EventArgs e)

5.3 菜单与工具栏 5.3.1 MenuStrip控件 MenuStrip控件主要用于生成所在窗体的主菜单。 5.3 菜单与工具栏 5.3.1 MenuStrip控件 MenuStrip控件主要用于生成所在窗体的主菜单。 1.MenuStrip控件的基本属性 1) AllowItemReorder:当程序运行时,按下Alt键是否允许改变各菜单项的左右排列顺序。默认值为false,当更改该属性值为true时,按下Alt键的同时可以用鼠标拖动各菜单项以调整其在菜单栏上的左右位置。 2) Dock:指示菜单栏在窗体中的位置,默认值为Top。 3) GripStyle:是否显示菜单栏的指示符,即纵向排列的多个凹点,默认值为Hidden。当更改该属性值为Visible时,显示位置由GripMargin属性指定。 4) Items:用于编辑菜单栏上显示的各菜单项。

5.3.1 MenuStrip控件(续) 2.MenuItem菜单项的基本属性 1) Checked:指示菜单项是否被选中。默认值为false。 2) CheckOnClick:决定单击菜单项时是否使其选中状态发生改变。默认值为false,即单击菜单项不会影响其Checked属性;当更改该属性值为true时,则每次单击菜单项都会影响其Checked属性,使其值在false和true之间切换。 3) CheckState:指示菜单项的状态。与复选框CheckBox控件的ThreeState属性相同,共有3个属性值:Checked、Unchecked、Indeterminate,分别表示选中、未选中、不确定三种状态。 4) Image:指定在该菜单项上显示的图标。

5.3.1 MenuStrip控件(续) 5) DisplayStyle:指示菜单项上的显示内容。共有4个属性值:None、Text、Image、ImageAndText,分别表示不显示任何内容、仅显示文本、仅显示图标、同时显示文本和图标。默认值为ImageAndText。 6) DropDownItems:单击该属性后的【…】按钮,调出【项集合编辑器】,以此编辑该菜单项对应的子菜单中的各菜单项。 7) ImageScaling:指定是否调整图标大小。默认属性值为SizeToFit,即调整图标大小以适应菜单项。该属性的另一个属性值为None,即不调整图标大小。 8) ShortcutKeys:为菜单项指定的快捷键。 9) ShowShortCutKeys:指示是否在菜单项上显示快捷键,默认值为true。

5.3.1 MenuStrip控件(续) 3.MenuStrip控件的常用事件 1) ItemClicked:当单击菜单栏上各主菜单项时触发。 2) LayoutCompleted:当菜单栏上各主菜单项的排列顺序发生变化之后触发。使用该事件时,AllowItemReorder属性必须设为true。

4.MenuItem菜单项的常用事件 1) Click:单击菜单项时触发。 2) DropDownClosed:关闭菜单项的子菜单时触发。 3) DropDownItemClicked:单击菜单项的子菜单中任何一项时触发。 4) DropDownOpened:菜单项的子菜单打开之后触发。 5) DropDownOpening:打开菜单项的子菜单时触发。

图5-18 “RTF文件编辑器-主菜单”窗体界面 mainMenuStrip richTextBox1 Enabled:false 图5-18 “RTF文件编辑器-主菜单”窗体界面

5.3.1 MenuStrip控件(续) 5. 部分代码 1) 分别双击各菜单项,添加其Click事件,代码如下: private void 新建NToolStripMenuItem_Click(object sender, EventArgs e) { richTextBox1.Enabled = true; richTextBox1.Clear(); richTextBox1.Focus(); } private void 保存SToolStripMenuItem_Click(object sender, EventArgs e) // 将文本框中的内容保存为D:\source.rtf,并清除文本框中的内容给出提示信息 richTextBox1.SaveFile("D:\\source.rtf", RichTextBoxStreamType.RichText); MessageBox.Show("文件已保存于source.rtf!"); // 使【打开】菜单项可用,用于打开文件D:\source.rtf 打开OToolStripMenuItem.Enabled = true;

5.3.1 MenuStrip控件(续) private void 打开OToolStripMenuItem_Click(object sender, EventArgs e) { richTextBox1.Enabled = true; richTextBox1.LoadFile("D:\\source.rtf", RichTextBoxStreamType.RichText); } private void 剪切TToolStripMenuItem_Click(object sender, EventArgs e) richTextBox1.Cut(); private void 复制CToolStripMenuItem_Click(object sender, EventArgs e) richTextBox1.Copy(); private void 粘贴PToolStripMenuItem_Click(object sender, EventArgs e) richTextBox1.Paste();

5.3.1 MenuStrip控件(续) private void 全选AToolStripMenuItem_Click(object sender, EventArgs e) { richTextBox1.SelectAll(); } private void 帮助HToolStripMenuItem_Click(object sender, EventArgs e) MessageBox.Show("建设中……"); private void 退出XToolStripMenuItem_Click(object sender, EventArgs e) this.Close();

5.3.2 ContextMenuStrip控件 ContextMenuStrip控件的功能是制作右键快捷菜单。该控件是用于为其他控件服务的,不能单独使用。 1.ContextMenuStrip控件的基本属性 1) Item:用于编辑快捷菜单上的各菜单项。 2) Opacity:设置快捷菜单的透明度。取值在0%~100%之间,默认值为100%,即不透明。 2.ContextMenuStrip控件的常用事件 1) ItemClicked:快捷菜单中的任何一个菜单项被单击时触发。 2) Opening:快捷菜单打开时触发。

ContextMenuStrip: myContextMenuStrip richTextBox1 ContextMenuStrip: myContextMenuStrip myContextMenuStrip 图5-19 “RTF文件编辑器-快捷菜单”窗体界面

5.3.2 ContextMenuStrip控件(续) 3. 部分代码 变量声明 Color oldColor; int smallSize=4; FontStyle oldFontStyle;

2) ContextMenuStrip控件中的各菜单项的Click事件代码: private void toolStripMenuItem大字体_Click(object sender, EventArgs e) { FontFamily oldFontFamily = richTextBox1.SelectionFont.FontFamily; richTextBox1.SelectionFont = new Font(oldFontFamily, 24, oldFontStyle); } private void toolStripMenuItem小字体_Click(object sender, EventArgs e) richTextBox1.SelectionFont = new Font(oldFontFamily, smallSize, oldFontStyle); } private void toolStripMenuItem红色字体_Click(object sender, EventArgs e) richTextBox1.SelectionColor = Color.Red;

5.3.2 ContextMenuStrip控件(续) private void toolStripMenuItem蓝色字体_Click(object sender, EventArgs e) { richTextBox1.SelectionColor = Color.Blue; } private void toolStripMenuItem绿色字体_Click(object sender, EventArgs e) richTextBox1.SelectionColor = Color.Green; private void toolStripMenuItem恢复字体大小_Click(object sender, EventArgs e) richTextBox1.SelectionFont = new Font(oldFontFamily, 8, oldFontStyle); private void 恢复字体颜色ToolStripMenuItem_Click(object sender, EventArgs e) richTextBox1.SelectionColor = oldColor; private void toolStripMenuItem保存文件_Click(object sender, EventArgs e) richTextBox1.SaveFile("D:\\source.rtf");

5.3.3 ToolStrip控件 ToolStrip控件的作用是为Windows应用程序添加工具栏。工具栏一般是由多个按钮、标签等排列组成,通过这些项可以快速地执行程序提供的一些常用命令,比使用菜单选择更加方便快捷。 ToolStrip控件的常用属性和事件与MenuStrip控件基本相同,工具栏上各项的属性和事件与MenuStrip控件中菜单项基本相同。

5.3.3 ToolStrip控件 部分代码 分别双击ToolStrip控件中的各项,添加其Click事件,代码如下: private void toolStripButton新建N_Click(object sender, EventArgs e) { richTextBox1.Enabled = true; richTextBox1.Clear(); richTextBox1.Focus(); }

5.3.3 ToolStrip控件(续) private void toolStripButton打开O_Click(object sender, EventArgs e) { richTextBox1.LoadFile("D:\\source.rtf"); } private void toolStripButton保存S_Click(object sender, EventArgs e) richTextBox1.SaveFile("D:\\source.rtf"); richTextBox1.Clear(); MessageBox.Show("source.rtf文件已保存!"); private void toolStripButton剪切U_Click(object sender, EventArgs e) richTextBox1.Cut(); private void toolStripButton复制C_Click(object sender, EventArgs e) richTextBox1.Copy(); private void toolStripButton粘贴P_Click(object sender, EventArgs e) richTextBox1.Paste();

5.3.3 ToolStrip控件(续) 2)“toolStripComboBox字体”的TextChanged事件的代码如下: private void toolStripComboBox字体_TextChanged(object sender, EventArgs e) { FontFamily myfontfamily = richTextBox1.SelectionFont.FontFamily; switch (toolStripComboBox字体.Text) case "大字体": richTextBox1.Font = new Font(myfontfamily, 40, System.Drawing.FontStyle.Regular); break; case "小字体": richTextBox1.Font = new Font(myfontfamily, 8, System.Drawing.FontStyle.Regular); case "适中字体": richTextBox1.Font = new Font(myfontfamily, 24, System.Drawing.FontStyle.Regular); }