(一)WinForm开发环境的使用方法
1)软件部署的架构
2)创建Windows应用程序
1. 在Visual Stuido中创建Windows应用程序的步骤:
- 打开Visual Studio;
- 新建项目;
- 项目类型:Visual C# 项目;
- 模板:Windows应用程序;
2. 不必选择.NET最高版本
开发的时候使用最高的,将来客户机也要安装最高版本;
【目录结构】注意:
- 一般都有一个program.cs文件,这是应用程序的入口点;
- 引用中是我们使用中的一些模块;添加引用才能添加命名空间;
- Properties 中AssemblyInfo.cs是程序集信息;
- Form.cs 与 Form.cs [设计] 之间的切换的快捷键是F7和Shift + F7;
3. 解决方案资源管理器
作用:显示整个醒目的文件组成;
注意【冒号的作用】:
- 表示继承;
- 实现接口;
partial关键字:
限定类本身的组成部分,当一个类加上这个关键字以后,各部分会整合成为一个类;
常用属性:
(二)事件驱动机制
出现错误,要先排查第一个;
1)事件的应用
计算机中的事件:
- 鼠标按下、键盘按下;
事件的作用:
- windows系统通过事件处理来响应用户的请求,在没有用户请求之前,事件处于静止等待状态;
事件的组成:
- 提前设置好一个事件(.NET平台设计),然后根据需要添加一个事件处理程序(开发者自定义),最后将“事件本身”和“处理程序”连接起来(后台自动关联);
- 当用户操作事件的时候(比如单击按钮、双击图标等),自动调用事件处理程序完成相应任务;
2)设置按钮的属性
- 按钮的name实际上是一个ID,即这个是唯一的;
- 增加一个事件,比如一个Click,可以在事件中找到,然后双击,出来事件的框架;想要删除一个Click事件,就要在FrmMain.cs[设计]中,找到这个按钮控件,然后在属性中,右键Click,单击重置即可;直接在代码中删除事件,而不是重置的话,执行的时候会发生错误【需要手动删除这个事件的委托】
public partial class FrmMain : Form
{
public FrmMain() //构造方法
{
InitializeComponent();
// 将按钮的单击事件和事件响应方法结合【实际上是在另外的一个位置,这是放在这里便于观察】
this.BTNTest.Click += new System.EventHandler(this.BTNTest_Click);
}
private void FrmMain_Load(object sender, EventArgs e)
{
}
//事件的响应方法
private void BTNTest_Click(object sender, EventArgs e)
{
MessageBox.Show("你好!");
}
}
增加两个响应方法:
增加的是两个事件断开和事件连接的按钮,这个是比较有用的,在设置下拉框的时候,如果不先断开会出错;
namespace WFDemo
{
public partial class FrmMain : Form
{
public FrmMain() //构造方法
{
InitializeComponent();
// 将按钮的单击事件和事件响应方法结合
this.BTNTest.Click += new System.EventHandler(this.BTNTest_Click);
}
private void FrmMain_Load(object sender, EventArgs e)
{
}
//事件的响应方法
private void BTNTest_Click(object sender, EventArgs e)
{
MessageBox.Show("你好!");
}
//事件断开按钮
private void BtnSwitch_Click(object sender, EventArgs e)
{
this.BTNTest.Click -= new System.EventHandler(this.BTNTest_Click);
}
//事件关联按钮
private void button1_Click(object sender, EventArgs e)
{
this.BTNTest.Click += new System.EventHandler(this.BTNTest_Click);
}
}
}
注意:
sender 表示的是事件源对象,但是在使用的时候需要强制类型转换为本来的类型,因为开始是object类;
- 下面是公共响应事件的例子:
// 主要看最后一个BtnTeacher_Click方法
namespace WFDemo
{
public partial class FrmMain : Form
{
public FrmMain() //构造方法
{
InitializeComponent();
// 将按钮的单击事件和事件响应方法结合
this.BTNTest.Click += new System.EventHandler(this.BTNTest_Click);
//给三个按钮单击事件添加同一个事件响应方法
this.BtnAndy.Click += new System.EventHandler(this.BtnTeacher_Click);
this.BtnCarry.Click += new System.EventHandler(this.BtnTeacher_Click);
this.BtnCoco.Click += new System.EventHandler(this.BtnTeacher_Click);
}
private void FrmMain_Load(object sender, EventArgs e)
{
}
//事件的响应方法
private void BTNTest_Click(object sender, EventArgs e)
{
MessageBox.Show("你好!");
}
private void BtnSwitch_Click(object sender, EventArgs e)
{
this.BTNTest.Click -= new System.EventHandler(this.BTNTest_Click);
}
private void button1_Click(object sender, EventArgs e)
{
this.BTNTest.Click += new System.EventHandler(this.BTNTest_Click);
}
private void button2_Click(object sender, EventArgs e)
{
}
// 事件响应的公共方法(sender表示的是事件源对象)
private void BtnTeacher_Click(object sender, EventArgs e)
{
string txt = ((Button)sender).Text;
MessageBox.Show(txt + "您好!");
}
}
}
3)常用控件的事件
窗体的重要事件:
- Load:窗体加载事件(应用较少);
- FormClosing:窗体关闭之前发生的事件;
- FormClosed:窗体关闭以后发生的事件;
文本框的重要事件:
- TextChanged:文本框内容改变事件;
- KeyPress:用户按下某键并释放的时候发生的事件;
- MouseLeave:当鼠标离开文本框的时候发生;
下拉框的重要事件:
- SelectedIndexChanged:当用户选择的下拉项改变的时候发生;
(三)消息提示的完整用法
消息提示要学会用,但是不能使用太多,因为需要手动关闭,影响用户体验;
演示:
// 这里只是写出事件的响应方法;并没有将单击事件与事件的响应方法相结合,这个工作是由虚拟机完成;
private void BtnTestMsg_Click(object sender, EventArgs e)
{
MessageBox.Show("请输入学员姓名!");
MessageBox.Show("请输入学员姓名!", "验证提示");
MessageBox.Show("请输入学员姓名!", "验证提示", MessageBoxButtons.OKCancel);
MessageBox.Show("请输入学员姓名!", "验证提示",
MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
// 用户分别选择取消或者确定时候分别执行怎样的结果
DialogResult result = MessageBox.Show("请输入学员姓名!", "验证提示",
MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
if(result == DialogResult.Cancel)
{
//用户取消操作
MessageBox.Show("用户取消操作!");
}
else
{
//用户继续执行操作
MessageBox.Show("用户继续操作!");
}
}
代码分析: