Hi,你好,你可能要问了,那面向对象的程序 它的核心概念是什么呢?当然面向对象的程序的 概念那就是对象。 所有的东西都是对象 特别是在 C# 里呢它更是这样,任何东西呢都是对象。 注意这个对象 不能读成对 xia,不能读成对 xia。 那这个 那所有的对象我们怎么去描述它呢?有三个基本要素。 这个基本要素呢,第一个 叫做属性,property。 property 属性,它指的 是呢一个事物的基本的状态或者特征 比如说,标签的上面的文本,label1. Text 或者是呢 this. BackColor 这个背景颜色。 它指的是一种状态 那么一般说来呢属性呢是用名词或者形容词 来表示的。 第二个就是方法。 方法呢,method 它指的是事物的动作或者功能,比如说 xxxx.SetBounds, 那设定它的边界 那这个边界呢有着它的 x, y 位置,横向纵向位置,以及呢宽度或高度 width 或 hight。 所以呢这实际上呢 就是一个它的一种功能或者它的一种动作 再比如说我们开始用到的那个 MessageBox.Show, 这就是 这个对象 .Show 显示这样一个 方法。 所以方法是一种 它是一种事物的一种功能。 第三个要素是事件 event, 这个事件呢指的是这一个对象跟外界对象的一种 通知机制或者是一种消息机制。 那比如说我们这个按钮被点击了,那就是 Click 那这就是一个事件。 一般说呢事件呢因为它是一种完成的 动作,所以经常用动词的原型或者呢分词 来表示,就是分词或者原型来表示它有一个事件发生了 那这个事件的写法它总是一个加等,以后我们还会有减等 加等,加等的意思呢就是注册了一个事件,比如说 这个 button1.Click, 这个事件发生了 加等就是注册了一个事件,就是注册了一个通知,就是 也就是我们,但是在 C# 里写成加等 加等于一个事件。 这个事件呢一般说呢是 new 一个事件处理器 new System.EventHandler 就是这个事件处理器。 那这个加等于,这个事件处理器它的本质是什么呢? 这个本质呢就是一个函数。 就是当这个 Click 发生以后 我要执行的某一个函数,那就是 this.button1_Click。 但这段代码呢 它会系统会自动地帮我们生成,我们也可以呢手工地来书写 总的说来呢,这三个要素就是属性、 方法和事件 那可能在别的语言里面呢只有属性和方法 但是在这个语言里面我们拥有事件,当然以后还会有更多的 这三个是最特征的,它就把事物的状态、 事物的功能以及呢这个事物的 跟外界的一种交互都把它描述 出来了。 当然在这里面呢,属性基本上就相当于 大体上相当于一个变量,方法呢大体上相当于一个函数 事件呢就是加等于一个函数 在早期我们要写的比较长,new 事件处理器,现在呢你可以直接 写,就是在 C# 2.0 以上的版本你都可以直接说 这个事件加等于一个函数。 来看一点例子 这几个例子呢就是使用对象的 属性、 方法和事件来完成的 我们先看看比如说我们要改变一些对象的颜色 大小和位置,我们就可以用属性或者方法来完成 好,我们看这个例子,在这里面呢我们加上一个按钮 这个按钮呢点右键设置它的属性 这个文本呢我们就写一个测试 然后双击这个按钮,或者呢 在这个属性窗口里头 找到这个事件,这个闪电状的这个事件这个按钮 然后我们可以找到 一个事件,这个事件呢就是,现在呢默认的就是 Click 事件 双击这个事件,那它就会产生一个 button2_Click 这样一个函数,那这个函数呢我们就可以在里面填写代码 this. 比如说我们写个 this. text, 但 this 呢指的是这个窗体 等于,我们可以写上一段文本 那这里面呢就是,这个 text 呢 就是窗体这个 this 对象的一个属性,我们也可以写上 this.BackColor 等于 颜色,就背景颜色。 Color from Argb, 就是说红绿蓝三个分量来构成一个颜色 比如说,255 这个 这个颜色呢,红绿蓝每一个字节 最大呢是 255,红绿 我们用红或绿呢都是 255,构成一个黄颜色 那我们运行一下看 点击这个测试按钮,那它就会把这个标题 这个属性呢就变成这是一个应用程序 然后呢,窗口的背景颜色呢就变成了 红绿组成的黄颜色 这就是使用属性。 当然我们也可以呢 再使用方法,举个例子。 比如说我们加一个标签 [无声] 然后在这里写上 this.label1 .SetBounds 那这个位置,x 位置 y 的位置 然后宽度,还有高度 运行一下 点击这个按钮 那它就把这个 label 的位置呢移动到这个地方,刚开始是在这个地方 所以这就是使用属性和方法 当然我们有的时候属性和方法呢是相互关联的,比如说 this.label1.Left 左边位置。 实际上呢刚才那个 Bounds 呢也设定了左边位置 我们可以 += 200 再运行看看效果 那这个程序呢,一点,那这个 label 的位置呢它就移动到右边来了 甚至我看不见了,移动到这儿来了。 所以也就是说 属性和方法呢就是这样用的。 下面我们再看看 事件。 一般地说来呢在界面上 我们双击这个对象呢它就会自动生成这个事件的代码 我们也可以呢在属性窗口里头 属性窗口里头先找到这个对象 然后呢点这个事件,那个闪电那个事件。 然后我们可以选别的 别的事件。 这里有很多的事件包括 Click 鼠标点击啦 还有呢键盘按下啦 KeyDown, KeyPress 等等 所以这些事件呢都是可以用的 下面我们再来看看另外一个事件,比如说 当鼠标在窗体上移动,这个事件发生的时候呢我们希望把这个 鼠标的位置给显示出来,那你就可以这样做 那我们首先,在这个界面上 选,点右键属性窗口里头呢 找到 Form1 当前这个窗体的事件,这个事件呢我们刚才想的是 MouseMove 鼠标移动,所以我们找到 MouseMove 事件, 双击它,然后呢 Visual Studio 呢就自动生成了一个 Form1_MouseMove 这个函数。 这个函数呢 它带了两个参数,sender,sender 呢这个就相当于是谁发出了这个事件。 MouseEventArgs 就鼠标移动的具体的 情形,它通知我们。 所以这就相当一个通知消息一样, 就是说鼠标移动了,好我们在这个移动过程当中呢, 可以写相应的代码。 现在 this.label1, 就这个窗体里面的 label1 这个对象。 .Text 文本等于鼠标移动呢 这个事件呢信息呢就是在 e 这个对象里头,那么这个对象呢它又有一些属性。 当前的 x 然后还有 y,我们在 x、 y 之间呢 写个逗号,这个加号表示连接, C# 里头的加号呢用得很方便,可以呢表示 字符串的连接,所以是 x 然后连接一个逗号,再连接一个 y。 让我们来运行一下,看那个效果。 那鼠标在窗体上移动这个事件发生的时候呢, 它就会把这个鼠标的位置给 我们显示到这个标签里头。 所以这就是一个事件发生以后, 然后呢我们要做的事情。 你看那个程序编写起来,是不是很容易啊? 你可能要问哦:『这个代码、 这个事件它是怎么样就关联到这个函数的呢?』 实际上呢是由 Visual Studio 帮我们自动生成的一个代码,我们可以在这里呢 右边这个解决方案的资源管理器里头, 也就是右边这个窗格里头,找到 Form1,我们把它展开,可以看到呢它 生成了一个除了 Form1.cs 这个 C# 文件以外, 还有一个叫 Form1.Designer.cs。 那这个文件呢,它里头我们也可以打开看,这就是 设计器帮我们自动生成的代码。 但这个代码里面 可以展开设计器生成的代码,我们可以看一下。 这里面的代码呢,它有分了这么几 个部分,比如说这是按钮,这个按钮从哪里来的呢?你可能要问。 这个按钮呢是 new 了一个 Button,new 了一个 System.Window.Form.Button。 所以这就是这个按钮它之所以能够有的原因,有了这个按钮,同时呢 我们看还有一些比较重要的语句,设置它的字体、 它的位置、 它的名字等等等等,这就是属性。 也就是说,设计器帮我们把这些属性的设置过程呢, 书写成了代码,当然比较重要的就是这个事件代码。 Click + 等于 new 一个函数,new 加等于 new EventHandler 一个函数。 同样的刚才那个 MouseMove 事件也是,MouseMove 这个事件 + 等了 一个函数,这个函数呢 它把它当成了一个 MouseEventHandler,就是 鼠标事件的处理器。 以后我们写程序的时候 你也可以完全手工地写 new 一个对象,然后呢 写这个属性和方 法,另外还有 + =。 当然有一句话呢比较关键, 这就是 this,就是这个窗体 Controls 这个它的控件的集合, 也就是它里面的所有的这些对象。 这个控件 Add, Add 加进去什么呢?Label1、 Button1、 Button2,所以这些代码我们以后 可以手工书写,但我们也可以看到它自动生成了 也是相当的方便。