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)等待用戶行爲,觸發對應事件,執行事件處理程序