知道了编程中对象是对现实个体的抽象后,我们学习了对象的属性,但我们发现,只包含属性的个体多少有些许不完整。为什么这么说呢,拿人来打比方,人的属性有耳朵、鼻子、四肢等,但光有这些属性是一个完整的人吗?答案是否定的,因为人还会说话、走路、吃饭,受到刺激会有激烈的反应等,这些就是我们这节课要讲到的方法和事件。
简单的说,方法就是一个对象表现出来的行为,是这个对象可以做的一些事情。汽车作为一个对象,它可以行驶,行驶这个行为就作为汽车对象的一个方法。
在程序语言中我们如何来表示方法呢,我们通过对之前计算器程序做个小小的修改来认识一下方法:
/// <summary>
/// 计算运算结果
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void label15_Click(object sender, EventArgs e)
{
secondNumf = float.Parse(cache2);
switch (op)
{
case "+":
textBox1.Text = cache1 + cache2 + ((Label)sender).Text + (firstNumf + secondNumf).ToString();
break;
case "-":
textBox1.Text = cache1 + cache2 + ((Label)sender).Text + (firstNumf - secondNumf).ToString();
break;
case "*":
textBox1.Text = cache1 + cache2 + ((Label)sender).Text + (firstNumf *secondNumf).ToString();
break;
case "/":
textBox1.Text = cache1 + cache2 + ((Label)sender).Text + (firstNumf / secondNumf).ToString();
break;
}
}
该代码片段是在第二节课中计算器程序中的计算功能代码,在switch语句中,通过用户输入不同的运算符,来进行对应的运算操作。现在我们做如下修改,新添几个方法:
/// <summary>
/// 加法运算
/// </summary>
private string Add()
{
return (firstNumf + secondNumf).ToString();
}
/// <summary>
/// 减法运算
/// </summary>
private string Sub()
{
return (firstNumf - secondNumf).ToString();
}
/// <summary>
/// 乘法运算
/// </summary>
private string Mul()
{
return (firstNumf * secondNumf).ToString();
}
/// <summary>
/// 除法运算
/// </summary>
private string Div()
{
return (firstNumf / secondNumf).ToString();
}
然后修改原计算代码如下:
/// 计算运算结果
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void label15_Click(object sender, EventArgs e)
{
secondNumf = float.Parse(cache2);
switch (op)
{
case "+":
textBox1.Text = cache1 + cache2 + ((Label)sender).Text + Add();
break;
case "-":
textBox1.Text = cache1 + cache2 + ((Label)sender).Text + Sub();
break;
case "*":
textBox1.Text = cache1 + cache2 + ((Label)sender).Text + Mul();
break;
case "/":
textBox1.Text = cache1 + cache2 + ((Label)sender).Text + Div();
break;
}
}
可以看出,一定程度上代码更加简洁了,方法就是对特定功能的代码的封装,在需要的时候进行调用,实现代码的重用。
再来说下事件,事件是一个特殊的方法,该方法用来响应来自用户或者系统的“刺激”,同时表现出特定行为(这里说的特定行为即事件处理程序中代码的功能)。
学习到目前为止,其实我们已经使用过很多事件了,最直观的就是控件的Click事件,当用户点击的时候,来执行特定操作:
/// <summary>
/// 复位
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e)
{
//如果运动时钟未停止,强制停止
timer1.Enabled = false;
//恢复运动初始位置
label1.Location = new Point(12,28);
}
这是上节课中,控件运动中,复位功能的代码,当点击“复位”按钮时,触发该事件处理程序(特殊的方法)。
下面通过一个例子来练习一下事件,程序的功能是即时显示鼠标在窗口中的坐标:
程序部分代码如下:
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;
/*
*艾格网络工作室 2015.4.14
*专业编程培训,零基础入门,进阶提高
*承接微信公众平台开发、运维
*承接各类软件开发项目
*详情咨询QQ863536379
*email:aigenet@qq.com
*/
namespace Events
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 鼠标移动事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
//获取鼠标的坐标
int x = e.X;
int y = e.Y;
//显示鼠标坐标
this.Text = "X:"+x+",Y:"+ y;
}
}
}
更多精彩内容和详细讲解请下载教学视频观看:点击百度网盘下载
程序源码CSDN下载:点击CSDN下载