内容正文:
5.4 文档程序设计
算法与程序设计--C#
同步精品课堂
河北科学技术出版社
教学目标
一
理解 C# 中菜单设计的基本概念,包括下拉菜单和弹出式菜单的区别
熟悉单文档界面(SDI)和多文档界面(MDI)的特点和应用场景
掌握在 C# 中创建下拉菜单和弹出式菜单的方法和步骤
教学目标
01
02
03
掌握国家标准《机械制图》中有关图幅、比例、字体图线等基本规定。
教学重难点
二
教学难点
1、下拉菜单和弹出式菜单的创建与事件处理
2、单文档界面和多文档界面的设计与实现
教学重点
多文档界面中子窗体的管理和交互
教学难点
导入新课
三
讨论:
大家在日常使用的软件中,常见的菜单栏、工具栏和状态栏是如何设计的?左图是一个菜单,这些菜单和界面是如何实现的?在 C# 中能否实现类似的功能?
任务一
1
菜单设计
新知讲授
四
菜单的概念
菜单是一种常见的用户界面元素,用于组织和管理应用程序的功能。
菜单可以分为下拉菜单、弹出式菜单、快捷菜单等不同类型。
菜单的作用
提供用户与应用程序交互的入口,方便用户选择和执行各种操作。
提高应用程序的易用性和可维护性。
新知讲授
四
菜单的基本结构
(1)菜单项的右边有“...”:单击此菜单项时,将打开一个对话框,用户可以在该对话框中进行相应操作。
(2)菜单项的最右侧有黑色三角形:表示该菜单项有子菜单。单击此菜单项时,将进入下一级子菜单。
(3)热键
(4)快捷键:在任何时候用户按快捷键可以执行菜单项命令。
设计菜单
新知讲授
四
下拉菜单
下拉式菜单:位于窗口顶部,通过单击菜单栏中的菜单标题的方式打开。
MenuSrip是c#提供的菜单控件,主要用于创建窗体的下拉菜单。
➽ 设计步骤
①添加菜单和菜单项
双击工具箱中MenuStrip 控件
②输入子菜单
菜单项的右侧和下方也会显示出灰色文本框输入
(1)设计菜单
设计菜单
新知讲授
四
下拉菜单
③插入分隔条
右击菜单项选择“插入|Separator”命令
(2)设置菜单项属性
用户可以将MenuStrip菜单控件理解为一个容器。它是一个包含了所有菜单项的对象集。每一个菜单项是一个ToolStripMenuItem对象。每个菜单项的默认名称为菜单项文本加上ToolStripMenuItem。用户可以为每个菜单项ToolStripMenuItem对象设置属性。
新知讲授
四
ToolStripMenuItem属性
属性 说明
Checked 获取或设置选中标记是否出现在菜单项文本旁边。默认为 false
Name 获取或设置菜单项的名称
Enabled 用于控制菜单是否可用。如果值为false,菜单项呈灰色显示
ShortcutKeys 获取或设置与 ToolStripMenultem 关联的快捷键
ShowShortcutKeys 获取或设置快捷键是否显示在 ToolStripMenultem 旁边
Text 设置菜单项显示的文本
Image 获取或设置显示在 ToolStripMenuItem 上的图像
Visible 控制菜单项是否可见。默认为 true
ToolTipText 获取或设置一个值,该值为菜单项的提示信息
设计菜单
新知讲授
四
下拉菜单
(3)为菜单项编写事件过程
在设计菜单界面后,必须为菜单项编写事件过程,这样,菜单命令才能发挥作用。
菜单项常用的事件是Click事件。
弹出式菜单
ContextMenuStrip 是C#中提供的菜单控件,用于设计弹出式菜单。弹出式菜单设置完后需要将所属控件的 ContextMenuStrip 属性设置为设计好的弹出式菜单名称。
ContextMenuStrip contextMenu = new ContextMenuStrip();
ToolStripMenuItem copyItem = new ToolStripMenuItem("复制");
contextMenu.Items.Add(copyItem);
this.ContextMenuStrip = contextMenu; // 绑定到窗体
新知讲授
四
弹出式菜单
➽ 常用属性
(1)Items:添加菜单项。
(2)绑定到控件:设置控件的 ContextMenuStrip 属性。
➽ 示例
ContextMenuStrip contextMenu = new ContextMenuStrip();
ToolStripMenuItem copyItem = new ToolStripMenuItem("复制");
contextMenu.Items.Add(copyItem);
this.ContextMenuStrip = contextMenu; // 绑定到窗体
新知讲授
四
任务 :设计一个窗体Form1,模拟Visual Studio的“文件”菜单,实现单击“打开”菜单项,打开“打开”对话框,单击“全部保存”菜单项,打开“另存为”对话框。
创建步骤:
1.界面设计:从工具箱中拖拽一个MenuStrip控件。依照“文件”菜单中的菜单项名称依次添加菜单项及子菜单项
2.属性设置。选中需要设置属性的控件,到属性窗口中设置。
新知讲授
四
3.编写代码
对象 属性 属性值
保存Form1csSToolStripMenuItem ShortcutKeys Ctrl+S
Image “保存”图片
全部保存LToolStripMenuItem ShortcutKeys Ctrl+Shift+S
Image “全部保存”图片
打印PToolStripMenuItem: ShortcutKeys Ctrl+P
退出XToolStripMenuItem: ShortcutKeys Alt+F4
新知讲授
四
private void 打开OToolStripMenuItem_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
}
private void 全部保存LToolStripMenuItem_Click(object sender, EventArgs e)
{
saveFileDialog1.ShowDialog();
}
任务二
2
单文档界面(SDI)
设计菜单
新知讲授
四
单文档界面(SDI)
单文档界面SDI,一次只能打开一个窗体,显示一个文档。
➽ 实现方法
(1)使用 Form 类创建主窗体。
(2)通过菜单或工具栏打开新窗体。
➽ 示例
Form newForm = new Form( );
newForm.Text = "新文档";
newForm.Show();
任务三
3
多文档界面(MDI)
设计菜单
新知讲授
四
多文档界面(MDI)
多文档界面是指可以同时打开多个子文档的应用程序(如Visual Studio)。MDI应用程序由父窗体和子窗体构成。
➽ 实现方法
1.设置MDI窗体
①设置父窗体
窗体的IsMdiContainer属性设置为True。
②设置子窗体
设置完父窗体,设置某个窗体的MdiParent属性为指定的父窗体名
设计菜单
新知讲授
四
多文档界面(SDI)
➽ 示例
Form childForm = new Form();
childForm.MdiParent = this; // 设置父窗体
childForm.Text = "子文档";
childForm.Show();
2.MDI相关方法
①ActivateMdiChild 方法:用于激活 MDI子窗体
②LayoutMdi 方法:用于在 MDI父窗体内排列 MDI子窗体
新知讲授
四
任务 :创建一个Windows窗体应用程序,添加4个窗体,Form1为父窗体,其余为子窗体,在Form1中添加菜单MenuStrip1,菜单标题为“排列方式”,添加“图标”、“层叠”、“水平平铺”、“垂直平铺”4个菜单项,功能是单击“排列方式”菜单中的命令,以相应形式显示MDI子窗体。
创建步骤:
1.界面设计:设置4个窗体Form1、Form2、Form3、Form4。在Form1中添加菜单MenuStrip1,菜单标题为“排列方式”,添加“图标”、“层叠”、“水平平铺”、“垂直平铺”4个菜单项。
新知讲授
四
3.编写代码
2.属性设置:
对象 属性 属性值
Form1 IsMdiContainer true
private void Form1_Load(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.Show(); frm2.MdiParent = this;
Form3 frm3 = new Form3();
frm3.Show();
frm3.MdiParent = this;
Form4 frm4 = new Form4();
frm4.Show();
frm4.MdiParent = this;
this.ActivateMdiChild(frm2); }
新知讲授
四
private void 图标ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.LayoutMdi(MdiLayout.ArrangeIcons);//以图标形式显示
}
private void 层叠ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.LayoutMdi(MdiLayout.Cascade);//以层叠形式显示
}
private void 水平平铺ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.LayoutMdi(MdiLayout.TileHorizontal);//以水平平铺形式显示
}
private void 垂直平铺ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.LayoutMdi(MdiLayout.TileVertical);//以垂直平铺形式显示
}
新知讲授
四
“图标”显示子窗体
“层叠”显示子窗体
“水平平铺”显示子窗体
“垂直平铺”显示子窗体
师生互动
五
1、总结使用 MenuStrip 和 ContextMenuStrip 创建菜单和上下文菜单的方法;
2、总结单文档界面(SDI)和多文档界面(MDI)的区别;
讨论
随堂练习
六
1、在C#中,MenuStrip控件通常放置在窗体的________位置。
答案:顶部
解析:MenuStrip控件是放置在窗体的顶部位置
2、单文档界面应用程序的主要缺点是不能同时处理 ______ 文档。
答案:多个
解析:单文档界面应用程序只能处理一个文档
随堂练习
六
3、在 C# 中,( )控件用于创建主菜单栏。
A. ToolStrip
B. MenuStrip
C. ContextMenuStrip
D. StatusStrip
答案:B
解析:MenuStrip 是用于创建主菜单栏的控件,而 ContextMenuStrip 用于创建右键上下文菜单。
随堂练习
六
4、 ContextMenuStrip 通常与( )事件关联以实现右键菜单功能。
A. Click 事件
B. DoubleClick 事件
C. MouseDown 事件
D. MouseUp 事件
答案:C
解析:通常在 MouseDown 事件中判断鼠标按键是否为右键。Click 事件通常是鼠标左键单击触发;DoubleClick 是双击事件;MouseUp 事件虽然也可以实现,但 MouseDown 更符合右键菜单的即时响应需求
随堂练习
六
5、 在C#中,动态添加菜单项使用的方法是()
A. 使用Add()方法
B. 使用Insert()方法
C. 使用Append()方法
D. 无法动态添加菜单项
答案:A
解析:可以通过Add()方法动态添加菜单项。
随堂练习
六
6.在 C# 中,ToolStripMenuItem 是 MenuStrip 中的菜单项。( )
7.要将一个窗体设置为 MDI 父窗体,只需将其 IsMdiContainer 属性设置为 true。( )
答案:6. 对 7. 对
解析:
6.ToolStripMenuItem 是 MenuStrip 控件的菜单项
7.将窗体的 IsMdiContainer 属性设置为 true 后,该窗体就具备了作为 MDI 父窗体的条件,可以容纳子窗体。
课堂小结
七
谢谢
$$