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:是否居顶
clientSize:工作区的宽度和高度(size是整个window的宽度和高度。clientsize是工作区的宽度和高度,去掉border和标题栏的宽度)
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:鼠标释放
MouseEnter:当用户将鼠标指针移动到对象内时触发(mouseenter mousemove区别)
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向右和向下延伸
}
}
}