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 WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void label1_Click(object sender, EventArgs e)
{
}
private void myMove()
{
label1.Left = label1.Left + 5;
if (label1.Left > this.Height) label1.Left = -label1.Width;
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
}
private void button1_Click(object sender, EventArgs e)
{
timer1.Enabled = false;
myMove();
}
private void timer1_Tick(object sender, EventArgs e)
{
myMove();
}
}
}
1、名称空间和类
上例中,前8个语句以using开头,为名称空间(namespace)的引用空间。
名称空间是.NET Framework中提供引用代码的一种方式,像一个容器,可以唯一标识代码及其内容,在建立Windows程序时,需要用到.NET框架类库所提供的组件(按键button、标签label等),这些组件都包含在对应的名称空间中,这些组件都必须通过using关键字引用。
C#程序中,程序的源代码包含在了与当前项目同名的名称空间中,该名称空间的定义由关键字namespace引导,紧随其后的是这个名称空间的标识符(或名称),名称空间的内容包含在一对花括号{}中。
上例中,通过partial class关键字定义了一个Form1类,用户定义的源代码都在这个类中
2、初始化窗口
Form1类中只有一个与类同名的函数Form1(),其源代码如下:
public Form1()
{
InitializeComponent();
}
这个与Form1类同名的函数被称为构造函数,构造函数在实例化类对象时被自动调用,对窗体上安排的各控件进行初始化操作。
3、事件处理
编写代码时,我们在Form1类中输入了一下四段程序源码。名称为button1_Click、button2_Click和timer1_Tick的程序段被称为事件处理器(或事件处理程序),而myMove()的程序段被称为自定义函数。
(1)myMove函数分析
myMove函数中包含两个语句,从上向下一次执行,其作用是使字幕往后移动一次。
label1.Left = label1.Left + 5;作用是:将字幕到窗口左边界的距离增加5像素,使字幕右移
if (label1.Left > this.Height) label1.Left = -label1.Width;作用是:判断字幕的位置是否超出了窗体右边界,如超出,则将字幕重新移动到窗体左边外侧。
(2)事件处理器button_Click()分析
单用户单击按钮时,触发事件处理器 button1_Click(),依次执行其中的语句,第二个语句"myMove"执行时,程序调用函数myMove()从而实现右移功能。
(3)事件处理器timer1_Tick()分析
myMove的作用是使字幕向右移动,如果找到一种方法,能让用户单击按钮时,反复调用myMove()函数,就可以实现字幕连续右移。
timer有两个重要属性:Enabled属性和Interval属性。时钟的Enabled决定了时钟是打开还是关闭,默认情况下为关闭(Enabled=false)。Interval属性的值是一个整数,代表一个时间间隔,他的单位是毫秒,其默认值为100,代表0.1秒。当时钟被打开时,程序会根据Interval的属性指定的时间间隔反复执行时间处理器timer_Tick()中的语句,直到时钟再次关闭为止。
(4)事件处理器button2_Click()分析
触发按钮后,在其中写入打开时钟语句“timer.Enabled=true”,就能每隔0.1秒反复触发timer_Tick()事件。
4、总结
C#的Windows应用程序运行过程可以归纳为以下步骤
(1)导入程序所需组件对应的名称空间
(2)创建窗体类对象,并初始化窗体
(3)运行窗体对象
(4)等待用户行为,触发对应事件,执行事件处理程序