1¥ 排列窗体上的控件
1$ 对齐
选择要对齐的窗体控件
在VS的菜单中,选择“格式”à“对齐”选项
所选择的第一个控件是主控件,其他控件和它对齐
2$ 使用Anchor(锚定)
设置控件相对于窗体的某个边缘的距离保持不变,即:
与窗体一起动态调整控件的大小
步骤: 选择要锚定的控件
在“属性”单击Anchor属性右边的箭头,显示编辑器
在显示的十字形上选择或清除控件锚定的边
单击Anchor属性名,关闭编辑器
另外: Ctrl选择多个窗体,一起锚定多个控件。
3$ 使用Dock(停靠)
让控件始终保持在窗体的边缘,或者填充窗体
步骤:选择要停靠的控件
在“属性”窗口中单击Dock属性右侧箭头,显示编辑器
设置停靠方式
2¥ 创建多文档界面应用程序(MDI)
1$ MDI和SDI
SDI(Single Document Interface)单文档界面:
一次只能在窗口中打开一个文件,如想打开另一个,须关掉前一个。
如:记事本
MDI(Multi Document Interface)多文档界面:
同时打开多个文档,不需打开新的窗口
窗体被设置为父窗体后,背景颜色明显变深。
MDI由两种窗口组成:父窗口和子窗口
MDI的显著特点:
@ 启动一个MDI应用程序时,首先显示父窗体。
@ 它是应用程序中所有其他窗口的容器
@ 每个应用程序界面都只能有一个MDI父窗体
@ 在任何指定的时间都可以打开多个子窗体
@ 任何MDI子窗体都不能移出MDI框架区
@ 关闭MDI父窗体则自动关闭所有打开的子窗体
2$ 如何创建MDI
1.。创建MDI
1)设置父窗体:将父窗体的IsMDIContainer属性设置为True。
2)设置子窗体:在调用打开子窗体的Show()方法前,在代码中将
窗体的MdiParent属性设为this。
如://创建窗体对象
AddStudentForm addStudentForm = new AddStudentForm();
addStudentForm.MdiParent = this; //父窗体是当前窗体
addStudentForm.Show(); //显示创建学员用户窗体
2.。为父窗体添加子窗体列表
1)在父窗体中添加一个菜单栏
2)在菜单栏中,添加一个要显示子窗体列表的菜单项,命名为
--“窗口”
3)将整个菜单栏控件的MdiWindowListItem属性选设为
“窗口”菜单项对应的Name值。
MdiWindowListItem功能为在下拉菜单中显示所有子窗体
3¥ 使用WinForm高级控件
1.。工具条控件(ToolStrip)和状态条控件(StatusStrip)
工具条:用于创建功能强大的工具栏,可以包含多个按钮、标签、
下拉按钮、文本框、组合框等,可以显示文字、图片或文
字加图片。
状态条:常放在窗体底部,显示一些基本信息,可以包含标签、下
拉按钮等。
工具条和状态条的主要属性:
ImageScalingSize:工具条或状态条中的项显示的图像的大小
Items:在工具条或状态条上显示的项的集合
工具条或状态条上的按钮和标签的主要属性和事件:
主要属性:
DisplayStyle:设置图像和文本是否同时显示、只显示一种、
都不显示(ImageAndText同时显示)
Image: 按钮/标签上的图片
Text: 按钮/标签上显示的文本
重要事件:
Click:单击按钮/标签时,触发该事件。
另外:在MenuStrip、ToolStrip、StatusStrip控件上单击右键
选择“编辑项”按钮,则可设置菜单项的显示样式。
DropDownButton—工具条控件中的下拉菜单按钮
StatuLabel—状态条控件中的增加标签
添加好的工具条项转换为其他形式:
选中某工具条项,右键选择“转换为”选择需要的即可。
4¥ 使用选项卡控件(TabControl)
显示多个选项卡页,最重要的属性是TabPages.
Tabpages:包含的选项卡页的集合
MulliLine 是否可以显示多行选项卡
SelectedIndex:当前所选选项卡的索引值
5¥ 使用图片框、图像列表、计时器控件
图片框(PictureBox)
用于显示位图、GIF、JPEG等格式的图片或者图标
Image:图片框显示的图像
SizeMode:指定如何处理图片的位置和控件的大小
AutoSize显示实际大小
StretchImage平铺显示,即以PictureBox大小显示。
图片列表(ImageList)
用于存储Windows窗体其他控件使用的图像
Images:存储在图像列表中的所有图像
ImageSize:图像列表中图像的大小
TranspareColor:被视为透明的颜色
特别注意:
Images中存放的图像就像存放在数组中一样,每个图像都有一个索引值,从0开始使用,用于定位图像。
形如:Image[索引值]
可以调用图像数组的长度属性表示图像位置:
“图像列表名。Images。Count – 1”
计时器控件(Timer)
让程序每个一定的时间重复做一件事
通过Interval属性设置每个多长时间引发一次事件
每次引发事件要执行的代码就写在Tick事件的处理程序中
计时器的主要属性和事件:
属性: interval 事件发生的频率,以毫秒为单位
Enabled 是否定是引发事件
事件: Tick 每当指定时间发生的事件
方法: Start() 启动计时器
Stop() 停止计时器
6¥ 模式窗体和无模式窗体
模式窗体:当窗体显示时禁止访问应用程序的其他部分,
如:须用户确认的窗体
无模式窗体:当窗体显示时,允许使用应用程序的其他部分
如:EXCEL里同时打开多个表格文件
特别注意:ShowDialog();方法可以窗体显示为模式窗体
Show(); 方法可以将窗体显示为无模式窗体
如果已经是父窗口,绝对不能使用ShowDialog()显示
7¥ 用户输入的验证
1$ 应定义一个返回值为布尔类型的方法,用于用户输入成功与否的判定。
书上用的是:ValidataInput(),作为“登录”按钮的Click事件调用。
2$ Focus()方法:
任何一个控件都可以通过控件名调用Focus()方法,
使焦点停在某个控件上或文本框中,帮助用户找到应输入的位置。
8¥ 窗体间的数据传输
1$ C#中的字段
类似于Java中的属性,即类中的成员变量
2$ C#中的静态变量(static)
把变量设为静态的,可以通过类名直接调用
3$ 将窗体设置为隐藏
使用语句: this.Visible = false;
意为:改变当前窗体的Visible属性值为false
4$ 设置窗体的Load事件
类似于Click事件,用于窗体载入某项内容
如:让主窗体状态栏中显示当前登录用户的用户名,详见p139 第五步
另外:
1)显示一个窗体的标准语句:
Application.Run(new 窗体文件名());
2)按住Ctrl,拖动控件可以实现窗体中的控件复制
3)在菜单条中加带下划线的字母,如(P)要带下划线,用(&P)输入
4)菜单项中的横线用于分割上下不同的菜单项,打“-”减号后回车即可
5)在工具箱中双击工具图标,效果等于拖拽
6)group的重要作用之一是,不同的rdo控件在不同的group中被视为不
同的rdo组,分别不能同时选中。