1、创建winform程序
1.1 RAD工具
- RAD:Rapid Application Development ——快速 应用 开发
- 创建用户界面时,把控件从工具箱拖放到窗体上,把它们放在应用程序运行时需要的地方,再双击该空间,添加空间的处理程序。
1.2 WINDFORM
- windform是windows Forms的缩写,是一种只能客户端技术
- 用于创建传统的基于windows应用创徐的基本工具,可为用户提供信息,接收器输入的窗口,有着友好的界面外观的程序
- 通常情况下,通过向窗体上添加空间并开发响应的程序用来相应用户的操作,生成windows窗体应用程序。
- 控件(Controls)是显示数据或接受数据输入的相对独立的用户界面(UI)元素。

 
 
 
- 入口点:main()仍然是程序的入口点
- 运行:仍然是点击启动
- 可最大最好还原关闭
- 程序运行时,首先执行主函数中的窗体
- 快速切换到UI界面的方法 
  -  双击Foms.cs 
-  在Form.cs空白处右击 
  
-  shift+F7/F7 
 
-  
- 创建窗体实质:利用System.Windows.Forms类或其派生类来创建。我们在拖动的时候,其实就是创建了一个对象。
- 引用命名空间,如何删除多余的命名空间
  
2、窗体的添加与删除
窗体也属于控件
 添加窗体:
 
 
 主窗体:在main函数当中创建的窗体对象,我们称只为你这个窗体应用程序的主窗体。也就一位这,当将主窗体关闭后,整个应用程序都关闭了
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace _2_窗体的添加与删除
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1()); //此处的窗体通常称为主窗体
        }
    }
}
删除
 
3、窗体常用属性
设置窗体属性有两种方法:
 一种是通过属性面板(三种方法):右键,视图 ,F4
 一整是通过代码:窗体唯一标识.属性名=属性值
 
 
 
3.1 常用属性
BackColor:设置窗体背景颜色
 BackgroundImage:设置窗体背景图片(自动拉伸)
 Cursor:鼠标光标形状
 HelpButton:是否显示帮助按钮,不能与最大化最小化同时显示
 MaxiMizeBox:最小化按键显示
 MinimizeBox:最小化按键显示
 Icon:图标
 MainMenuStrip:为本窗体指定主要MenuStrip
 MaximumSize:最大化尺寸(水平方向0,垂直方向0代表适屏全屏)
 MinimumSize:最小化尺寸(当MaximumSize与MinimumSize相同的值时,最小化后将无法拖动改变大小)
 Name:窗体的唯一标识名(在后台要获得前台的控件对象,需要使用Name属性)
 Text:窗体标题(显示在窗体上方的名称)
 showIcon:确定窗体是否显示图标
 showInTaskbas:确定窗体是否在windows任务栏中显示
 Size:设置窗体大小
 statPosition:确定窗体第一次出现的位置
 topMost:是否居顶
3.2 使用代码修改属性
双击窗体切换到代码页面
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace _3_窗体属性
{
    public partial class mainForm : Form
    {
        public mainForm()
        {
            InitializeComponent();
        }
        private void mainForm_Load(object sender, EventArgs e)
        {
            this.Text = "第一个窗体";    
        }
    }
}
5、窗体常用事件
-  事件:即发生的事。简单理解为用户的操作,它有对象引发。 
-  查看方法:窗体的所有事件都能在属性面板里查看 
  
-  应用程序需要在事件发生时进行响应,因此事件分为 - 注册事件:必须为对象注册事件测绘被执行
- 触发事件:注册后的事件必须触发才可发生。
 
-  添加事件:如果为窗体添加一事件,只要在事件面板里选择添加事件,在其后面的空格里双击,响应的事件将自动生成。默认诶选中的是最常用的事件 
  
 事件的本质就是方法,常用事件有:
 Load:窗体运行完成即为加载,窗体加载完成触发事件
 click: 单击事件,不仅包含鼠标的点击,还包含键盘的响应
 DoubleClick:双击事件
 FormClosed:窗体关闭事件(窗体已经被关闭)
 KeyDown:键被按下时触发(保持被按下的状态)
 KeyPress:用户按下并释放某个按键被触发
 KeyUp:键被释放后触发
 mouseClick:鼠标点击
 MouseDoubleClick:鼠标双击
 MouseDown::鼠标按键按下
 MouseHover:鼠标光标悬停
 MouseMove:鼠标移动
 MouseUp:鼠标释放
6、窗体中添加控件与窗体显示和隐藏
6.1 添加控件
添加控件的方法:拖、拉、拽

 
 添加控件的另一个方法:即通过窗体的controls类的ADD方法格式如下:
 窗体的标识.Controls.Add(控件标识符)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 窗体添加控件及窗体显示和隐藏
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            Button mybutton = new Button();
            mybutton.Text = "添加的新按钮";
            this.Controls.Add(mybutton);
        }
    }
}
6.2 窗体显示和隐藏
窗体的显示与隐藏是通过Show方法和Hide方法来实现的,格式如下:
 窗体标识符.show
 窗体标识符.hide
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 窗体添加控件及窗体显示和隐藏
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            Button mybutton = new Button();
            mybutton.Text = "添加的新按钮";
            this.Controls.Add(mybutton);
        }
        private void Form1_Click(object sender, EventArgs e)
        {
            Form2 myform2 = new Form2();
            myform2.Show();
            Form1 myfrom1 = new Form1();
            myfrom1.Hide();
        }
    }
}
7、MDI窗体
- SDI窗体:single document interface 单文旦窗体
- MDI窗体(myltiple-document interface 多文档界面)用于同时显示多个文档,MDI窗体的创建避免了用户打开很多窗口的时候任务单中挤满了窗体
- MDI窗体使用方法 
  - 确定一个主窗体,把窗体的IsMdiContainer属性设置为true
- 创建子窗体,并设置他们的主窗体
  
  
  
  
  
  
 
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace _7_MDI窗体
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
        }
        private void 新建ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            childForm mychildform = new childForm();
            mychildform.MdiParent = this;   //this 代表所在的类,此方法属于MainForm,所以this代表MainForm,
            mychildform.Show();
        }
        private void 层叠ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LayoutMdi(MdiLayout.Cascade);// LayoutMdi()在父窗体内排列多文档界面,MdiLayout在父窗体内指定多文档子窗体的布局,Cascade所有子窗体层叠在子窗体内
        }
        private void 垂直ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LayoutMdi(MdiLayout.TileVertical);
        }
        private void 水平ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LayoutMdi(MdiLayout.TileHorizontal);
        }
        private void 关闭ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }
    }
}
8、窗体中空间的基本操作
- 当控件添加到窗体中之后,用户可以使用多种方式对他们进行操作,如对其、调整大小、顺序、调整间距等。
- 控件操作的三种方式:菜单,工具栏,代码(菜单和工具栏可以对多个控件进行操作) 
  - 属性调整大小
  
- 代码调整大小
 
- 属性调整大小
using System;
using System.Drawing;
using System.Windows.Forms;
namespace 窗体控件中的基本操作
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button9_Click(object sender, EventArgs e)
        {
            button9.Size = new Size(200,200);  // 此种方式是只有在响应时间触发后才改变。此处是点击事件
        }
    }
}
	 - 使用工具栏调整大小:调整一个控件(button8)与另一个控件(button8)一样大小

- 菜单调整大小

-  顺序: 
 - 选择控件,【格式】【顺序】|【置于顶层】/【置于底层】
 - 工具栏置于顶层和置于底层
  - 代码实现:BringToFront方法和SendToBack方法
using System;
using System.Drawing;
using System.Windows.Forms;
namespace 窗体控件中的基本操作
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            button9.Size = new Size(200, 200);  // 此种方式是只有在响应时间触发后才改变。此处是点击事件
            button1.BringToFront(); //置于顶层
            button7.SendToBack();// 置于底层
        }
    }
}
- 对齐
- 【shift】或【ctrl】或框选选择多个控件 【格式】| 【对齐】(以第一次选择空间为基准)
  
- Location属性定位实现对齐(属性面板、代码)
using System;
using System.Drawing;
using System.Windows.Forms;
namespace 窗体控件中的基本操作
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            button9.Size = new Size(200, 200);  // 此种方式是只有在响应时间触发后才改变。此处是点击事件
            button1.BringToFront(); //置于顶层
            button7.SendToBack();// 置于底层
            button7.Location = new System.Drawing.Point(100,50);  //坐标是以窗体左上角为0,0向右和向下延伸
        }
    }
}











