Windows应用程序就是WinFormWindows窗体)应用程序
    .NET Framework
提供了Windows窗体以及窗体内常用“控件”,可以用少量代码创建出丰富的应用程序。


1 创建第一个Windows应用程序

 1$ 
创建第一个Windows应用程序的步骤:
    1
。选择“文件”-“新建”-“项目”
    2
。左侧:项目类型选择“Visual C#
    3
。右侧:模板选择“Windows应用程序”
   
注意:创建完成后,屏幕左侧出现了一个“工具箱”窗口,包含各种控件,
         
可以直接把他们拖放(或双击)到窗体上。

 2$ 
认识Windows应用程序文件夹结构

    1
。解决方案资源管理器

       1
。。Form1.cs 就是窗体文件,保存窗体代码
       2
。。展开Form.cs前的加号,会看到Form1.Designers.cs文件,是窗体
          
设计文件。
       3
。。Program.cs是主程序文件,其中包含程序的入口Main()方法
       4
。。Main()方法中“Application.Run(new Form1());”,意思是运行窗体
          
文件Form1.csRun是运行的意思。

           Application
应该是系统自带的一种类,通过类名Application可以
          
调用多种类中的方法,

          
如:Application.Exit();意为推出应用程序。

    2
。认识窗体文件

          
每一个窗体在C#中都是一个类文件(有包含了若干分布类)

       1
。。窗体文件由两种编辑窗口:窗体设计器窗口、窗体代码编辑窗口

       2
。。partial(部分的)关键字:将一个类标识为分布类

          
这是.NET Framework 2.0引入的一个新特性分布类
          
C#中,使用partial关键字可以将同一个类的代码分开放在多
          
个文件中,每个文件都是类的一部分。

          
所有窗体都是分布类,如:Form1这个类的代码就分布在两个文
          
件中:Form1.cs Form1.Designer.cs
          
它们具有相同的命名空间和相同的类名

          
即:每个窗体都是静态主程序(类名为program)的一个分部类
              
因为肯定会被program类调用,所以都是public

       3
。。Form
          
如:public partial class Form1: Form
          
类名后面多了一个冒号和一个Form

           Form
.NET Framework定义好的一个基本窗体类,具有窗体的
          
基本属性和方法,冒号的意思是继承


2 认识窗体
 1$
窗体的重要属性
    Name                  
窗体对象的名字,用以在代码中进行标识
    Icon                   
窗体名前的图标,必须是.ico文件
    MaximizeBox           
窗体最大化按钮是否有效
    MinimizeBox           
窗体最小化按钮是否有效
    HelpButton             
须在最大化和最小化按钮都无效时,是否显示帮助按钮。

    BackColor               
窗体的背景颜色
    BackgroundImage        
窗体的背景图像
    FormBorderStyle         
窗体显示的边框样式,7个可选,默认为Sizable
                               
参数FixedSingle为固定窗体大小
    MaximizeBox   
确定窗体标题栏的右上角是否有最大化框,默认为True
    ShowInTaskBar 
确定窗体是否出现在Windows任务栏中,默认为True
    StartPosition    
确定窗体第一次出现时的位置
    Text           
窗体标题栏中显示的文本
    TopMost       
指示窗体是否始终显示,在此属性未设置为True的所有
                  
窗体之上,默认为False.
    WindowState    
确定窗体的初始可视状态,
                   
包括:Normal,Maximized,Minimized。默认为Normal

 2$
窗体的重要事件

   
事件是可以被控件识别的操作,如按下确定按钮,选择某个单选按钮或者复选框

    
触发事件的对象称为事件发送者;接收事件的对象称为事件接收者

    Windows
操作系统本身就是通过事件来处理用户的请求的。

    Windows
通过随时响应用户触发的事件,做出相应响应叫做事件驱动机制

  
1。。窗体的重要事件
     Load                    
窗体加载事件,窗体加载时发生
     MouseClick              
鼠标单击事件,当用户单击窗体时发生
     MouseDoubleClick        
鼠标双击事件,当用户双击窗体时发生
     MouseMove             
鼠标移动事件,当鼠标移动过窗体时发生
     KeyDown               
键盘按下事件,在首次按下某个键时发生
     Keyup                  
键盘释放事件,在释放键时发生

   2
。。 编写事件处理程序的步骤:
     1
。单击要创建事件处理程序的窗体或控件
     2
。在“属性”窗口中单击“事件”按钮
     3
。单击要创建事件处理程序的事件
     4
。为事件处理程序命名,以便在代码程序中使用
     5
。定位到事件处理方法(自动打开相应的事件处理程序代码编辑窗口)
     6
。编写处理代码

   3
。。 窗体事件处理程序(方法)
     
如: //窗体的鼠标移动事件处理程序
          private void Form1_MouseMove(object sender,MouseEventArgs e)
          {
             this.Text = string.Format(“
捕捉到鼠标了!{0}{1}”, e.X,e.Y);
           }
 
        1
this 是一个关键字,代表窗体本身
        2
Text就是窗体的Text属性,窗体的标题
        3
Sender是事件源,表示谁引发了这个事件
          
不同的控件可能会共用一个事件处理方法,我们可以通过sender
          
得到引发事件的控件,需要强制类型转换。
       
4e叫做鼠标事件参数(MouseEventArgs)对象
          
不同的事件会有不同的事件参数
          
事件参数类里面封装了我们可能用到的数据,如鼠标事件参数就
          
封装了鼠标的横纵坐标,通过对象eàe.X e.Y来获得。

3 使用窗体控件(暂略)

特别注意:
      Panel
控件与GroupBox控件的唯一区别是面板左上方没有标题
     
作用是为其他控件提供可识别的分组:

     
如:同一个窗体中存在多个rdo控件而且只能单选,这时就需放在
         
同一个PanelGruopBox中,才能实现。

4 实现窗体间的跳转:两步à 创建窗体对象 显示窗体
 1$
创建窗体对象
   
被调用的窗体类  窗体对象名 = new 被调用的窗体类();
 2$
显示窗体
   
窗体对象名。Show( )

5 使用MessageBox对象
    MessageBox
是一个系统定义好的类,用于控制窗体上显示的提示文字

1$ MessageBox类中的Show()方法
  
最简单的消息框:
       MessageBox.Show
(要显示的字符串)
  
带标题消息框:
       MessageBox.Show
(要显示的字符串,消息框的标题);
  
带标题、按钮的消息框:
       MessageBox.Show
(要显示的字符串,消息框的标题,消息框按钮);
  
带标题、按钮、图标的消息框:
       MessageBox.Show
(要显示的字符串,消息框的标题,消息框按钮,
                       
消息框图标);

  
注意:如果想带图标,必须先加按钮
 
 MessageBoxButtons.OKCancel
让消息框显示“确定”和“取消”按钮
                              
还有其他许多按钮,通过。运算符调用
 MessageBoxIcon.Information设置消息框显示的图标,还有很多图标,
                            
通过。运算符调用

6 消息框的返回值
   
每个消息框都有一个返回值,是一种DialogResult(对话框返回值)类型
   
可以通过。运算符来获取其中的一种返回值。
   
   
如:  DialogResult.OK    //用户单击了“确定”返回的值