当前位置:首页 >> 计算机软件及应用 >> windows应用开发

windows应用开发


第8章 Windows项目开发

第8章 widows应用开发
?窗体Form类 ?Windows窗体类层次结构 ?控件与组件 ?菜单和工具栏 ?MDI窗体 ?用户控件

2

8.1系统开发基本步骤
?Windows开发的基本步骤

需求分析

系统设计

数据库设计

测试发布

代码设计

界面设计

3

8.1系统开发基本步骤
?超市进销存管理系统功能

4

8.1系统开发基本步骤
?作业8.1

根据商品进销存管理系统功能框架完成其数据

库设计
(要求:用SQL Server2005(2008)版本)

5

8.1系统开发基本步骤
?超市进销存管理系统业务流程图
系统 登录

N 登录成功
Y 系统主窗体

基本档案

进货管理

销售管理

库存管理

系统维护
6

第8章 widows应用开发
?窗体控件描述 ?可视化类 ?属性设计 ?方法调用

?事件机制(消息循环)

7

8.1系统开发基本步骤
?登录窗体界面设计

8

8.2 Form类
?Form类
?窗体是应用程序的基本单元,表示组成应用程序的 用户界面的窗口或对话框 。 ?当向项目添加窗体时,可选择从框架提供的Form类 继承还是从以前创建的窗体继承。

?窗体是容器类控件,从Control类继承。
?窗体常有单文档界面(SDI)、资源管理器样式界

面、多文档界面(MDI)。
9

8.2 Form类
?Form类常用事件
事 Load Activated Validated ControlAdded FormClosed KeyPress 件 说 明 事件顺序 在内存中加载窗体时触发,此时不可见 窗体激活时触发的事件,发生在Load之后 验证窗体后触发 添加控件时触发 关闭时触发 敲击键盘上的键时触发 构造函数 Load Activated Closing Closed Deactivate

AutoSizeChanged MouseClick
Scroll Click Closed

窗体大小发生变化时激活 鼠标单击窗体时触发
滚动窗体时触发 单击时 关闭窗体后发生

10

8.2 Form类
?说明 Activated事件: 发生于Load之后,即当控件被传递到窗体上

时,以后每次显示该窗体时,Activate事件将再
次发生。但Load事件不再发生。所以若某个窗体

可能被多次显示,则应把初始化步骤放入其中而
非Load事件中。
例:若希望把焦点设置在新窗体上某个特定的控件,则应在该事件 方法中调用Focus方法。……
11

8.2 Form类
?Form类常用属性

Visible 属性:
在窗体的可见性在事件中,若希望 Windows 应用程序的主窗体在应用程序启动时不可见,设 Visible =flase无效。 因为通常启动窗体的生存期决定了应用程序 的生存期,只要将应用程序的启动变为一个模块 即可有效。因为当“关闭”模块时,应用程序的

生存期也随之结束。
12

8.2 Form类
?TopMost 属性 顶端的窗体始终位于指定应用程序中所有窗口 的前面。例如,可能希望将浮动工具窗口保持在应 用程序主窗口的前面。TopMost 属性控制窗体是否

为最顶端的窗体。
说明:

即使最顶端的窗体不处于活动状态,它也会浮
在其他非顶端窗体之前。
13

8.2 Form类
?FormBorderStyle 属性
设 无 固定三维 固定对话框 固定单线边框 固定工具窗口 可调整大小 置 说 明 没有边框或与边框相关的元素,用于启动窗体 当需要三维边框效果时使用。不可调整大小,可在标题栏上包括控件菜单栏、 标题栏、最大化和最小化按钮。用于创建相对于窗体主体凸起的边框 用于对话框。不可调整大小,可在标题栏上包括控件菜单栏、标题栏、最大 化和最小化按钮。用于创建相对于窗体主体凹进的边框 不可调整大小。可包括控件菜单栏、标题栏、最大化和最小化按钮。只能使 用最大化和最小化按钮改变大小。用于创建单线边框 显示不可调整大小的窗口,其中包含“关闭”按钮和以缩小字体显示的标题 栏文本。该窗体不在 Windows 任务栏中出现。用于工具窗口 该项为默认项,可调整大小,经常用于主窗口。可包括控件菜单栏、标题栏、 最大化和最小化按钮。鼠标指针在任何边缘处可调整大小

可调整大小的 工具窗口

用于工具窗口。显示可调整大小的窗口,其中包括“关闭”按钮和以缩小字 体显示的标题栏文本。该窗体不在 Windows 任务栏中出现
14

8.2 Form类
?Location 属性 指定窗体在计算机屏幕左上角的显示位置。 它以像素为单位指定窗体的位置。还需要设置 StartPosition 属性,以指示显示区域的边界。

Windows应用程序的 StartPosition 属性
的默认设置是“WindowsDefaultLocation”,

该设置通知操作系统在启动时根据当前硬件计
算该窗体的最佳位置。
15

8.2 Form类
?Application类

表示整个应用程序,用于管理程序、线程和
Windows 消息,通常用来显示一个应用程序的最

初窗体。它是Sealed类,也不能创建实例对象,
它属System.Windows.Form命名空间。

?常用的static方法: Run: 在当前线程下启动一个标准消息循环。
若已提供窗体,则令该窗体可见。
16

8.3 Control类
?Control基类常用属性
属 性 Anchor Dock BackColor Cursor Enabled Font ForeColor Height Left Name Parent Right Tabindex TabStop Tag Text Top Visible Width 含 义 设置控件的哪个边缘锚定到其容器边缘,与父控件该边距离不变 设置控件停靠到父容器的哪个边缘:上下左右 获取或设置控件的背景色 获取或设置当鼠标指针位于控件上时显示的光标形状 设置控件是否可以对用户交互做出响应 设置或获取控件显示文字的字体 获取或设置控件的前景色 获取或设置控件的高度 获取或设置控件的左边界到容器左边界的距离 获取或设置控件的名称 获取或设置控件的父容器 获取或设置控件的右边界到容器左边界的距离 获取或设置在控件容器上控件的Tab键的顺序 设置用户能否使用Tab键将焦点放到该控件上 获取或设置包括有关控件的数据对象 获取或设置与此控件关联的文本 获取或设置控件的顶部距离其容器的顶部距离 设置是否在运行时显示该控件 获取或设置控件的宽度
17

8.3 Control类
?Control基类常用事件
事 件 Click DoubleClick MouseMove MouseUp Paint Validated KeyDown KeyPress KeyUp GetFocus Validating Resize LostFocus (常见事件)含 义
单击控件时发生 双击控件时发生,包含Click事件 当鼠标指针移到控件上时发生 当鼠标指针位于控件上,并释放鼠标键时发生 重绘控件时发生 在控件完成验证时发生 在控件有焦点的情况下,按下任一个键时发生,在KeyPress前发生 在控件有焦点的情况下,按下任一个键时发生,在KeyUp前发生 在控件有焦点的情况下释放键时发生 在控件接收焦点时发生 在控件正在验证时发生 在调整控件大小时发生 在控件失去焦点时发生
18

8.3 Control类
?Windows常用控件
控 件 名 称 Label LinkLabel Button TextBox RadioButton CheckBox 控 件 含 义 标签 链接标签 按钮 文本框 单选按钮 复选框 控 件 名 称 ListBox ListView ComboBox StatusBar ToolStrip GroupBox 控 件 含 义 列表框 列表视图 组合框 状态栏 工具栏 分组框

PictureBox
TreeView

图片框
树型控件

Timer
DataGridView

定时器
数据表控件

DateTimePick

日期控件

MenuStrip

菜单栏

19

8.3 Control类
?Label控件类

显示提示信息。
属 Text 性 含 义 获取或设置与此控件关联的文本 获取或设置标签中文本的对齐方式 ContentAlignment枚举值:Left Center Right等 获取或设置显示在 Label 上的图像 获取或设置包含要在 Label 控件中显示的图像集合 ImageList 获取或设置在 Label 上显示的图像的索引值。 获取或设置在控件中显示的图像的对齐方式

TextAlign
Image ImageList ImageIndex ImageAlign

20

8.3 Control类
?LinkLabel控件类

可显示超链接的 Windows 标签控件 。
属性/事件 LinkArea LinkColor VisitedLinkColor ActiveLinkColor LinkClicked事件 含 义 属性设置激活链接的文本区域
设置链接的颜色。单击链接后,通过更改链接的颜 色来指示该链接已被访问。

确定选定链接文本后将要进行的操作。

21

8.3 Control类
?TextBox控件类 可用于显示或编辑无格式文本的控件 。默认最

多输入 2048 个字符。 MultiLine=true,则
最多可输入 32 KB 的文本
属 性 PasswordChar ReadOnly MultiLine WordWrap 含
密码字符 是否只读 是否允许多行显示 是否自动换行



22

8.3 Control类
?TextBox控件类常用方法与事件
方法/事件
Clear Cut Copy 清除文本框中的文本 剪切文本框文本到剪贴板 复制文本框的文本到剪贴板





Paste
GotFocus LostFocus KeyDown KeyUp TextChanged

用剪贴板内容替换文本框文本 事 件 在此元素获得逻辑焦点时发生
此元素失去逻辑焦点时发 在焦点位于此元素上并且用户按下键时发生 在焦点位于此元素上并且用户释放键时发生 当文本框的内容发生变化时触发这个事件
23

8.3 Control类
?按钮Button控件类

表示一个响应 ButtonBase .Click 事件的
Windows 按钮控件


Click


在单击 Button 时发生





24

8.3 Control类
?按钮Button控件类
属性/事件 Text TextAlign Image ImageAlign Click事件 说 设置或获取按钮上显示的文本 获取或设置按钮中文本的对齐方式 设置或获取按钮上显示的图片 获取或设置按钮中图片的对齐方式 在单击 Button 控件时发生 明

设置透明背景的Button
//样式 btn.FlatStyle = FlatStyle.Flat; //前景 btn.ForeColor = Color.Transparent; //去背景 btn.BackColor = Color.Transparent; //去边线 btn.FlatAppearance.BorderSize = 0; btn.FlatAppearance.MouseOverBackColor = Color.Transparent; //鼠标经过 btn.FlatAppearance.MouseDownBackColor = Color.Transparent; //鼠标按下
25

8.2 Form类
例:设计一个加法器

26

8.2 Form类
?思考
完善加法器,使其更具人机交互性 ?如何在第一个文本框按下回车键后自动进入 下一个文本框??

?如何使提示信息更人性化。例第一个文本框
输入错误时就给出出错信息

?何时采用异常机制好,是在单击“计算”按钮
时?还是??
27

8.2 Form类
?容错性设计
KeyPressEventArgs事件参数e.Handled属性 将 Handled 设置为 true,则取消 KeyPress 事件
private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar>= '0' && e.KeyChar<= '9') e.Handled = false; else e.Handled = true; }
28

8.2 Form类
?容错性设计_通用文本框按键事件代码
private void txtNum1_KeyPress(object sender, KeyPressEventArgs e) { TextBox t = (TextBox)sender; if (t != null) { if (t.Name == "txtNum1") { if (e.KeyChar == (Char)Keys.Enter) txtNum2.Focus(); } } if (e.KeyChar >= '0' && e.KeyChar <= '9') e.Handled = false; else e.Handled = true; } 29

8.2 Form类
?作业 完善两个数的加法运算,使其满足 ?使用异常机制使其具有较好的容错性

?合理使用KeyPress事件实现焦点转移

30

8.3 Control类
?ListBox控件类 显示可选列表项。

Items ScrollAlwaysVisible SelectionMode SelectedIndex SelectedIndices SelectedItem SelectedValue


为true,显示滚动条





ListBox列表集合,每一项可是串、图形、数值等 One: 一次选一项 MultiSimple:可选多项 MultiExtemded:可用 Ctr shift和箭头多选 None: 不可 获取或设置选定项的从零开始的索引,未选中为获取一个所有当前选定项的从零开始的索引集合。 获取或设置 ListBox 中的当前选定项,SelectedItems集合 获取或设置由 ValueMember 属性指定的成员属性的值

MultiColumn Sorted Text

获取或设置列表框中列的数目 为true,对选项按字母排序 当SelectionMode非None时,将搜索匹配该文本的选项, 返回列表中第一个选中的选项
31

8.3 Control类
?ListBox.Items集合常用方法
方法/属性
Items.AddItems Items.Insert Items.Clear Items.Count Items.Add 添加列表项集 插入列表项 清空列表项 列表中的项数 添加列表项





可以在在设计时使用Items属性向列表添加项。
32

8.3 Control类
?ListBox控件类属性/事件
属性/事件
DataSource DisplayMember ValueMember ColunmWidth


获取或设置要显示字段



绑定的数据源(集合或DB中的表)

获取或设置选中选项后的字段实际值 在包含多个列的列表框中,该属性指定列宽
事 件

SelectedIndexChanged 在选中的索引改变时引发该事件

33

8.3 Control类
?组合框ComboBox控件类
由文本框和列表框组成,控件分两部分显示:
属 性 含 义

SelectedItem SelectedIndex

获得列表中当前被选中条目的值及索引,但不能是键入的文 本,否则产生异常 决定ComboBox的样式及行为: ComboBoxStyle.DropDown——下拉式。 ComboBoxStyle.Simple——简单样式,用户可输入。 ComboBoxStyle.DropDownList——下拉列表式

DropDownStyle

其他属性、方法、事件与ListBox类似
34

8.3 Control类
作业
下载并模拟QQ登录界面

35

8.3 Control类
?单选按钮RadioButton控件类
派生于ButtonBase类。可使用GroupBox控件将多个 RadioButton组成一组。否则默认窗体中所有RadioButon 是同一个组。
方法/属性 Checked AutoCheck Click 事件 CheckedChanged 事件 含
RadioButton被选中为true. 为 true(默认),则当选择单选按钮时,将自动清除 该组中的所有其他单选按钮 单击 时发生 Checked值发生改变时引发



注意Form_Activated事件对初始化的作用。
36

8.3 Control类
?单选按钮RadioButton控件类
派生于ButtonBase类。可使用GroupBox控件将多个 RadioButton组成一组。否则默认窗体中所有RadioButon 是同一个组。
方法/属性 Checked AutoCheck Click 事件 CheckedChanged 事件 含
RadioButton被选中为true. 为 true(默认),则当选择单选按钮时,将自动清除 该组中的所有其他单选按钮 单击 时发生 Checked值发生改变时引发



注意Form_Activated事件对初始化的作用。
37

8.3 Control类
?复选框CheckBox控件类
派生于ButtonBase类。可使用GroupBox控件将多个

RadioButton组成一组。否则默认窗体中所有RadioButon 是同一个组。
方法/属性
Checked CheckState
选中为true.





CheckState.Checked :选中状态 CheckState.Unchecked :未选中 CheckState.Indeterminate: 不可用状态

ThreeState

为 true ,CheckState.Indeterminate 可用

其他参见RadioButton
38

8.3 Control类
?分组框Group Box控件类
?容器类控件。类似于 Panel 、TabControl、
Splittert 等控件。 ?GroupBox 控件可以显示标题(分组框的标题由

Text属性定义)。
?Panel 控件有滚动条

?TabControl选项卡控件,用于显示多个选项卡

39

8.3 Control类
?列表视图ListView控件类
创建类似于 Windows 资源管理器右窗格的用户界面
属 View 性 取 值 LargeIcon:大图标模式 SmallIcon:小图标模式,多列显示 List:显示小图标,但总是显示在单列中 Details: 视图模式在多列中显示项

Items MultiSelect CheckBoxes
Activation

包含控件所显示的项
为 true,可选择多项。

为 true,则 ListView 控件可在项的旁边显示复选框
指定激活列表中的项的方法,为Standard、OneClick和TwoClick。 单击更改项文本的颜色。Standard方式采用双击激活列表项,但 项的外观并不改变。

各显示方式对应SmallImageList、LargeImageList、StateImageList图标
40

8.3 Control类
属性、事件
checkBoxes ItemActivate MultiSelect CheckBoxes Activation 取 指定项目旁边是否包括复选框 激活列表视图中的项目时产生,不包含激活哪个项目的细节 值

为 true,可选择多项。
为 true,则 ListView 控件可在项的旁边显示复选框 指定激活列表中的项的方法,为Standard、OneClick和TwoClick。 单击更改项文本的颜色。Standard方式采用双击激活列表项,但 项的外观并不改变。

各显示方式对应SmallImageList、LargeImageList、StateImageList图标

41

8.3 Control类
?例
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { int i; string[] dir = Directory.GetDirectories(comboBox1.SelectedItem.ToString()); // listView1.BeginUpdate(); listView1.Clear(); listView1.View = View.Details; ColumnHeader a0 = new ColumnHeader(); a0.Text = "名称"; a0.Width = 200; ColumnHeader a1 = new ColumnHeader(); a1.Text = "大小"; a1.Width = 150; ColumnHeader a2 = new ColumnHeader(); a2.Text = "类型"; a2.Width = 200; ColumnHeader a3 = new ColumnHeader(); a3.Text = "修改日期"; a3.Width = 100; listView1.Columns.AddRange(new ColumnHeader[] { a0, a1, a2, a3 }); for(i=0;i<dir.Length;i++) { DirectoryInfo d = new DirectoryInfo(dir[i]); listView1.Items.Add(new ListViewItem(new string[]{d.Name," ","文件夹",d.LastAccessTime.ToLongDateString()},0)); } string[] s2 = Directory.GetFiles(comboBox1.SelectedItem.ToString() ); foreach (string k in s2) { FileInfo info = new FileInfo(k); ListViewItem item = new ListViewItem(new string[] { info.Name, info.Length.ToString()," 文件 ", info.LastWriteTime.ToString() }, 2); this.listView1.Items.Add(item); } // listView1.EndUpdate(); }

42

8.3 Control类
?状态栏(StatusStrip)控件类
StatusStrip控件上可以有状态栏面板,用于显示指

示状态的文本或图标,或一系列指示进程正在执行
的动画图标(如:指示正在保存文档)。

?例:
?指示某个页面的 URL。

?提供有关页、节位置和编辑模式的信息。
?进度条(ProgressBar)控件
43

8.3 Control类
?图片框(PictureBox)
显示位图bmp、GIF/PNG、JPEG、图元文件(wmf)或图

标格式(ico)的图片。
SizeMode属性值 Normal(默认) AutoSize CenterImage 含 义

图像放置在控件的左上角,如果图像大于控件,则剪 裁图像的右下边缘 将控件的大小调整为图像的大小 图像在控件内居中,如果图像大于控件,则剪裁图片 的外边缘

StretchImage

将图像的大小调整到控件的大小。

44

8.3 Control类
?定时器Timer控件类
按用户指定的时间间隔来触发事件。 Enabled属性: 指定定时器是否可以触发事件。默认值为 false。

InterVal属性: 指定定时器控件触发的时间间隔,单位为毫秒。
Tick事件: 当运行每当到达指定时间间隔,就会触发这个事件。 Start方法: 启动定时器实例。
45

8.4 菜单类
?菜单MenuStrip类
应用程序可以为不同的上下文(应用程序状态)显 示不同的菜单。通过包含多个 MenuStrip对象,可以处 理用户与应用程序交互时应用程序的不同状态。单击菜

单上的某个项常是完成打开一个子菜单或导致应用程序
执行一个命令。

?菜单设计时的特殊符号
?“-”子菜单分组线

?“&”热键标识
46

8.4 菜单类
?菜单MenuStrip类
属 性 说 明

Items

菜单项集(ToolStripItemCollection ),由ToolStripMenuItem项组成

?ToolStripMenuItem类
表示 MenuStrip 或 ContextMenuStrip 上显示的可选 选项。提供配置菜单项的外观和功能的属性
属 性 说 获取或设置是否显示文本和图像 获取或设置显示的图像 ToolStripMenuItem子菜单集合,集合项为ToolStripItem类实例
47



DisplayStyle Image DropDownItems

8.4 菜单类
?ToolStripItem类
表示对 ToolStrip 或 ToolStripDropDown 可以包含的

所有元素的事件和布局进行管理的基类









DisplayStyle Image

获取或设置是否在 ToolStripItem 上显示文本和图像 获取或设置显示在 ToolStripItem 上的图像

48

8.4 菜单类
?说 明
?删除一级菜单项是将该菜单项从相应的 MenuStrip 的Items集合的Remove方法中删除。

?若此菜单项需再次使用,最好是隐藏或暂时禁用该
菜单项而不是删除它。 ?删除二级菜单或三级菜单,使用其父级对象 ToolStripMenuItem的DropDownItems集合的Remove 方法。
49

8.4 菜单类
?contextMenuStrip控件类
设计时与MenuStrip菜单一致,关联时,将控件或对 象的ContextMenustrip属性设为快捷菜单名称既可。

?ToolStrip控件类
设计时与MenuStrip菜单相似。

50

8.4 菜单类
?例
private void toolStripButton1_Click(object sender, EventArgs e) { //工具栏中第一个命令按钮的默认事件名 Font newFont=new Font(this.rtfBox.SelectionFont,this.rtfBox.SelectionFont.Bold ? rtfBox.SelectionFont.Style & ~FontStyle.Bold : rtfBox.SelectionFont.Style | FontStyle.Bold); rtfBox.SelectionFont = newFont; } private void toolStripUnderline_Click(object sender, EventArgs e) { Font newFont=new Font(this.rtfBox.SelectionFont,this.rtfBox.SelectionFont.Underline ? rtfBox.SelectionFont.Style & ~FontStyle.Underline : rtfBox.SelectionFont.Style | FontStyle.Underline); rtfBox.SelectionFont = newFont; } private void toolStripItalic_Click(object sender, EventArgs e) { Font newFont=new Font(this.rtfBox.SelectionFont,this.rtfBox.SelectionFont.Italic ? rtfBox.SelectionFont.Style & ~FontStyle.Italic : rtfBox.SelectionFont.Style | FontStyle.Italic); rtfBox.SelectionFont = newFont; } 51

8.4 菜单类
?例
//因为参数是FontStyle,所以用位运算处理,只更改Bold位
private void ToolStripMenuItemRoman_Click(object sender, EventArgs e) { try { Font newFont = new Font("Times New Roman", rtfBox.SelectionFont.Size + 4, rtfBox.SelectionFont.Style); rtfBox.SelectionFont = newFont; } catch (Exception) { MessageBox.Show("error!"); } }

也可在快捷菜单的单击事件中进行判断,简化程序
52

8.4 菜单类
?例:通过工具栏相关属性判断是哪个项被单击处理
private void toolStrip1_ItemClicked(object sender , ToolStripItemClickedEventArgse)

{

for (int i = 0; i < ((ToolStrip)(sender)).Items.Count; i++) { if (((ToolStrip)(sender)).Items[i] == e.ClickedItem) { MessageBox.Show(e.ClickedItem.ToString()); Font newFont = new Font(this.richTextBox1.SelectionFont, this.richTextBox1.SelectionFont.Bold ? richTextBox1.SelectionFont.Style & ~FontStyle.Bold : richTextBox1.SelectionFont.Style | FontStyle.Bold); richTextBox1.SelectionFont = newFont; } }

}

e.ClickedItem返回被单击的工具栏项ToolStripButtom
53

8.5 常用对话框
?常用.NET对话框类

commonDialog对话框是在父窗口中显示的窗口
54

8.5 常用对话框
?窗体对话框分类
?模式对话框
如“关于”对话框和“打开文件”对话框,在得到响应 前阻止用户切换到其他窗体和对话框。

?无模式对话框
如“单词查找”对话框,与主窗体并排存在,可 相互切换。

55

8.5 常用对话框
?常用对话框
常用对话框类 OpenFileDialog SaveFileDialog FontDialog ColorDialog 描 允许用户选择打开一个文件 允许用户选择一个目录和文件名来保存文件 允许用户选择字体 允许用户选择颜色 显示一个打印对话框,允许用户选择打印机和打印文 档的哪一部分 显示一个打印预览对话框 显示一个页面设置对话框 述

PrintDialog
PrintPreviewDialog PageSetupDialog

56

8.5 常用对话框
?CommonDialog常用方法和事件表

方法与事件 ShowDialog( ) Show() Reset( ) HelpRequest





以模态方式显示一个通用对话框,且返回一个 DialogResult枚举类型值。 以非模态方式显示一个通用对话框 把对话框的所有属性设为默认值 当用户单击对话框上的Help按钮时,引发该事件。

57

8.5 常用对话框
?DialogResult枚举类型值
枚举值 None OK Cancel Abort Retry Ignore Yes No 说 明 从对话框返回了 Nothing。 这表明有模式对话框继续运行。 对话框的返回值是 OK(通常从标签为“确定”的按钮发送)。

对话框的返回值是 Cancel(通常从标签为“取消”的按钮发送)。 对话框的返回值是 Abort(通常从标签为“中止”的按钮发送)。
对话框的返回值是 Retry(通常从标签为“重试”的按钮发送)。 对话框的返回值是 Ignore(通常从标签为“忽略”的按钮发送)。 对话框的返回值是 Yes(通常从标签为“是”的按钮发送)。 对话框的返回值是 No(通常从标签为“否”的按钮发送)。

58

8.5 常用对话框
?OpenFileDialog类的属性
常用对话框类 AddExtension CheckFileExists CheckPathExists DefaultExt FileName FileNames Filter FilterIndex InitialDirectory ReadOnlyChecked Title ShowReadOnly 描 述 用户省略扩展名,是否自动在文件名中添加扩展名。 打开一个不存在的文件,指示如果用户指定不存在的文件名, 文件对话框是否显示警告 指定若用户键入无效的路径和文件名,是否显示警告 默认扩展名,优先于Filter 对话框关闭时,保持用户选择的文件名 当MultiSelect=true,对话框关闭时,保持选择的文件名数组 保存当前过滤器,显示在SaveAsFileType对话框中 指出当前过滤器,下标从1开始。 对话框显示的初始目录,默认情况下,打开用户上一次运行时 打开的目录(注册表维护) 只读复选对话框是否被选中 标题 是否显示只读对话框 59

8.5 常用对话框
?说 明
?在开发中不应使用目录硬字符串。可使用System.Env
ironment.GetFolderPath()。它接受Environment.Spe cialFolder枚举,其中可定义要返回路径的系统目录。 ?Filter过滤器是一集合,显示于Files of type对应

的列表框中。每对用一竖杠字符“|”分隔,每个部分
需要两个字符串,所以总是偶数,第一个串定义要在 列表框中显示的文本,第二个串对应的扩展名。
60

8.5 常用对话框
?例
将InitialDirectory设为通用用户模板目录。

String dir=Environment.GetFolderPath (Environment.SpecialFolder.Templates)
对象实例名.InitialDirectory=dir;

?例
dlg.Filter=“text documents|*.txt|All File|*.*”;

注:过滤器前后不允许有空格。
61

8.5 常用对话框
?有效性验证ValidateNames属性
在试图打开一个文件前,OpenFileDialog可自动执

行对文件的有效性验证。 ValidateNames设为true,
则检查,若输入无效文件名(例、= )等,并单击OK 键后,会自动提示, 此时只有更正文件名或单击canca

l之后,才能退出。同时, ValidateNames设为true,
就可使用CheckFileExists和CheckPathExists进行文

件、路径等有效性验证。

62

8.5 常用对话框
?SaveFileDialog对话框常用属性
常用对话框类 AddExtension CheckFileExists CreatePrompt OverwritePrompt 描 述 用户省略扩展名,是否自动在文件名中添加扩展名。若用户未输入 扩展名,则使用DefaultExt属性设置的扩展名,若为空,则选择Fil ter中定义的扩展名。 打开一个不存在的文件,指示如果用户指定不存在的文件名,文件 对话框是否显示警告,默认false 为true(默认false),询问是否创建新文件 为true(默认),询问是否要覆盖已有文件

63

8.5 常用对话框
?FontDialog对话框 ?例
: if (fontDialog1.ShowDialog() == DialogResult.OK) { // 文本框对象.Font = fontDialog1.Font; //对选中文本设置字体 RichTextBox实例名.SelectionFont = fontDialog1.Font;
}

64

8.6 多窗体关联
?多窗体关联
?对非模态窗体而言,Close方法将销毁窗体实例。而 模态窗体只是隐藏,在第二次调用ShowDialog时, 将 再次显示原实例,从而保留原窗体中的数据。

65

8.6 多窗体关联
?窗体间的值传递
?例:从Form1的button_Click事件实现窗体间传值。
private void button1_Click(object sender, EventArgs e) { Form2 f = new Form2(); f.a = "form1传递过来的值"; f.Show( ); }

66

8.6 MDI多文档窗体
?多文档界面(MDI)
传统上,可编写3种基于Windows的应用程序: ?基于对话框的应用程序(Explorer界面)。
?单一文档界面(SDI),如记事本、计算器。 ?多文档界面(MDI),执行方式与SDI相同,但

同时可打开多个窗口。
?建立MDI应用程序步骤: ?创建MDI父窗体(容器)

?创建MDI子窗体
67

8.6 MDI多文档窗体

68

8.6 MDI多文档窗体

MainMenu已被 Menustrip替代

69

8.6 MDI多文档窗体

70

8.6 MDI多文档窗体
?MDI应用程序中常用到的类成员
类 属 性 成 员 名 ActiveMdiChild 说 明 获取当前活动MDI子窗体 判定窗体是否是MDI子窗体 判定窗体是否是MDI容器窗体 以Form对象数组形式获取窗体所包含 的MDI子窗体集 获取或设置该窗体的MDI容器窗体 获取代表MDI容器窗体的当前合并菜单 的MainMenu对象

IsMdiChild
IsMdiContainer MdiChild

Form

MdiParent MergeMenu 方 法 LayoutMdi

利用给定的显示模式在窗体中显示MDI 子窗体
71

8.6 MDI多文档窗体
类 事 Form 件 属 性 Menu 成员名 MdiChild Activate MdiList Item 说 明 当在MDI中激活或失活一个MDI子窗体时发生,注 意子窗体不接收Activated和Deactivate事件 获取该菜单包含的MenuItem对象,显示相关窗体 的MDI子窗体列表 全并一个给定菜单中以及该菜单所包含的MenuIt em对象 获取或设置该菜单是否和相关窗体的MDI子窗体列 表组装

方 法

Merge Menu
MdiList

MenuIt 属 获取或设置当和其他菜单合并时,该菜单项的合并 MergeOrder em 性 顺序 MergeType 获取或设置该菜单项怎样和其他菜单项合并.默认 是MergeType.Add
72

8.6 MDI多文档窗体
?合并菜单
当MDI父、子窗体都有相同的菜单项时,合并菜单应

处理该情况。
在MDI应用程序中,MDI容器窗体自动合并打开的子窗 体的菜单。修改菜单项MergeAction 属性

?MergeAction 枚举

73

8.6 MDI多文档窗体
?作业—设计简单文本编辑器

?用RichTextBox控件实现相应功能 ?有相应的设计文档提交 ?提交软件. ?解决方案命名格式: ?专业+班级+学号+姓名+方案名
74

8.6 MDI多文档窗体
?说明
双方菜单的AllowMerge设为:True 父窗体中具有与子窗体菜单相同菜单项,且需要合并者均设 MergeAction为:Matchonly。且双方的各菜单项的子菜单项 的MergeIndex从0开始编号,需放在最后的可为-1,且子菜单项 各项设MergeAction为:insert。 子窗体中菜单项在父窗体中菜单中没有的,可设MergeAction 为:insert。且对双方非合并项的MergeIndex从0开始编号。

(分隔线也算一项)
设子窗体中菜单Visible为false.
75


赞助商链接
更多相关文档:

windows驱动开发第3卷教程

windows驱动开发第3卷教程 - Windows 2000的驱动程序开发包(DDK)文档总览给您详尽的信息,这些信息对编写Windows2000平台任何类型的驱动程序都是必须的。本文档也描述...

建立Windows Embedded Compact 7开发环境

建立Windows Embedded Compact 7开发环境_计算机软件及应用_IT/计算机_专业资料。建立Windows Embedded Compact 7开发环境 【转载】建立 Windows Embedded Compact 7 ...

Windows下搭建wxWigets开发环境详解

Windows下搭建wxWigets开发环境详解 - wxWidgets VC++ Windows C++... Windows下搭建wxWigets开发环境详解_计算机软件及应用_IT/计算机_专业资料。wxWidgets VC++ ...

C#第7周上机

C#第7周上机 - C#桌面应用程序开发 计算机工程学院邵晓峰 第 6 周上机 Windows Form(2):记事本程序 一、 实验目的 (1) 理解 Windows 窗体 (2) 掌握窗...

Windows下的Objective-C集成开发环境(IDE)_图文

Windows下的Objective-C集成开发环境(IDE)_计算机软件及应用_IT/计算机_专业资料。Objective-C Objective-C 是苹果软件的编程语言,想要上机学习、调试,有一个集成...

Windows CE操作系统BSP开发笔记

Windows CE操作系统BSP开发笔记_计算机软件及应用_IT/计算机_专业资料。包括bootloader和OAL【原创】Windows CE 操作系统 BSP 开发———BootLoader 开发 OAL 开发 201...

基于WINDOWSDDK的USB键盘驱动开发

基于WINDOWSDDK的USB键盘驱动开发_计算机软件及应用_IT/计算机_专业资料。基于 WINDOWSDDK 的 USB 键盘驱动开发 【摘要】USB 接口具有方便快速等优点,已经发展成为一...

Windows群集开发

Windows群集开发 - Windows 群集开发-编写微软群集服务器(MSCS)资源 DLL:1)目录 编写微软群集服务器(MSCS)资源 DLL 微软公司 1997 年 摘要 微软群集服务...

Mobile应用开发中给自己的应用程序签名

Mobile应用开发中给自己的应用程序签名 - Mobile 应用开发中给自己的应用程序签名 王永辉 Windows Mobile 5 开始,Pocket PC 和 Smartphone 上都...

Qt转WP7 -第3章:Windows Phone开发和设计工具_图文

Visual Studio 2010 中有利于 Windows Phone 应用程序的设计,开发和调试。 值得注 意的是 Visual Studio 和 Qt Visual Studio 中添加也可以使用 Qt 应用程序开发...

更多相关标签:
网站地图

文档资料共享网 nexoncn.com copyright ©right 2010-2020。
文档资料共享网内容来自网络,如有侵犯请联系客服。email:zhit325@126.com