1 排列窗体上的控件

1$ 对齐
 
选择要对齐的窗体控件
 
VS的菜单中,选择“格式”à“对齐”选项
 
所选择的第一个控件是主控件其他控件和它对齐

2$ 使用Anchor(锚定)
 
设置控件相对于窗体的某个边缘的距离保持不变,即:
 
与窗体一起动态调整控件的大小

 
步骤: 选择要锚定的控件
        
在“属性”单击Anchor属性右边的箭头,显示编辑器
        
在显示的十字形上选择或清除控件锚定的边
        
单击Anchor属性名,关闭编辑器

 
另外: Ctrl选择多个窗体,一起锚定多个控件。

3$ 使用Dock(停靠)
  
让控件始终保持在窗体的边缘,或者填充窗体

  
步骤:选择要停靠的控件
        
在“属性”窗口中单击Dock属性右侧箭头,显示编辑器
        
设置停靠方式

2 创建多文档界面应用程序(MDI

1$ MDISDI
  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
:单击按钮/标签时,触发该事件。

另外:在MenuStripToolStripStatusStrip控件上单击右键
     
选择“编辑项”按钮,则可设置菜单项的显示样式。

      DropDownButton
工具条控件中的下拉菜单按钮
      StatuLabel
状态条控件中的增加标签

     
添加好的工具条项转换为其他形式:
         
选中某工具条项,右键选择“转换为”选择需要的即可。

4 使用选项卡控件(TabControl

  
显示多个选项卡页,最重要的属性是TabPages.
   Tabpages
:包含的选项卡页的集合
   MulliLine
是否可以显示多行选项卡
   SelectedIndex
当前所选选项卡的索引值



5 使用图片框、图像列表、计时器控件

图片框(PictureBox
 
用于显示位图、GIFJPEG等格式的图片或者图标
     Image
:图片框显示的图像
     SizeMode
:指定如何处理图片的位置和控件的大小
               AutoSize
显示实际大小
               StretchImage
平铺显示,即以PictureBox大小显示。

图片列表(ImageList
 
用于存储Windows窗体其他控件使用的图像
     Images
:存储在图像列表中的所有图像
     ImageSize
:图像列表中图像的大小
     TranspareColor
:被视为透明的颜色

特别注意:
Images
中存放的图像就像存放在数组中一样,每个图像都有一个索引值,0开始使用,用于定位图像。

形如:Image[索引值]    
可以调用图像数组的长度属性表示图像位置:
     
“图像列表名。ImagesCount – 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)在工具箱中双击工具图标,效果等于拖拽

6group的重要作用之一是,不同的rdo控件在不同的group中被视为不
  
同的rdo组,分别不能同时选中。

7cbo控件中,DropDownStyle属性中参数
若为DropDown时,可以自由输入。
若为DropDownList时,不可在空白处随意输入。