第四课:方法和事件

       知道了编程中对象是对现实个体的抽象后,我们学习了对象的属性,但我们发现,只包含属性的个体多少有些许不完整。为什么这么说呢,拿人来打比方,人的属性有耳朵、鼻子、四肢等,但光有这些属性是一个完整的人吗?答案是否定的,因为人还会说话、走路、吃饭,受到刺激会有激烈的反应等,这些就是我们这节课要讲到的方法和事件。

    简单的说,方法就是一个对象表现出来的行为,是这个对象可以做的一些事情。汽车作为一个对象,它可以行驶,行驶这个行为就作为汽车对象的一个方法。

    在程序语言中我们如何来表示方法呢,我们通过对之前计算器程序做个小小的修改来认识一下方法:

        /// <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);
        }

       这是上节课中,控件运动中,复位功能的代码,当点击“复位”按钮时,触发该事件处理程序(特殊的方法)。

    下面通过一个例子来练习一下事件,程序的功能是即时显示鼠标在窗口中的坐标:

1

    程序部分代码如下:

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下载












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值