在本文裡,通過編輯一個小小的可以將溫度從攝氏轉換到華氏的程序,我們將親身體會到C# GUI開發過程。閱讀本文最基本的要求是您要具有C#及面向對象程序設計的基本知識。本文的寫作宗旨是介紹C#,如果您希望編譯或是運行本文所列舉的程序,則需要有.NET Framework SDK的支持。
創建一個視窗應用程序主要包括以下的基本步驟:創建適合的表單,在表單上添加control,最後添加代碼。完成上述過程所需用到的C# 以及 .NET framework我們可以在System.WinForms namespace中找到。
第一步,創建表單。
我們以 class System.WinForms 為起源,創建一個class,然後初始化屬性。本文舉例中,Class的定義起始如下
public class TempConverter : System.WinForms.Form { . . . }
下面是我們想要的主窗口式樣
大小為180*90像素
不能隨意修改視窗大小。
標題顯示為 °C->°F / °F->°C
表單出現在屏幕中央
我們不需要"幫助"鍵(我們編制的應用程序過於簡便,以至不需要此類幫助)
我們不需要讓用戶有擴大該程序視窗范圍的權限(因為在給定尺寸裡,什麼都清晰可見)
通過設定TempConverter對象的屬性值初始化表單。屬性值的設定有兩種方法:
一、使用方法設定屬性值
二、通過屬性變量直接設定。
以下代碼。如果您想知道更多的有關於WinForms class的屬性和方法的知識,則可以參閱.NET Framework SDK的隨機文件。
this.SetSize(180,90); this.BorderStyle = FormBorderStyle.FixedDialog; this.Text = "°C->°F / °F->°C"; this.StartPosition = FormStartPosition.CenterScreen; this.HelpButton = false; this.MaximizeBox = false;
通過上述步驟,我們可以把所有的代碼連接在一起,這樣我們就能很方便的編輯、運行程序觀看表單的外觀。為此,我們要用到class 定義,要創建一個構造器(該構造器包含了上面所提到的代碼並會初始化主視窗的外觀),然後還需要建立一個main方法。具體建立步驟如下:
public class TempConverter : System.WinForms.Form { public TempConverter() { this.SetSize(180,90); this.BorderStyle = FormBorderStyle.FixedDialog; this.Text = "°C->°F / °F->°C"; this.StartPosition = FormStartPosition.CenterScreen; this.HelpButton = false; this.MaximizeBox = false; } public static void Main() { Application.Run( new TempConverter() ); } }
在Main()中出現了一條新的語句:
Application.Run(new TempConverter());
正如您所猜想的一樣,這條語句的意思是運行新表單
假設我們的源文件名稱為: TempConverter.cs,那麼我們通過執行下列命令來編譯代碼:
csc /r:System.dll /r:Microsoft.Win32.Interop.dll /r:System.WinForms.dll TempConverter.cs
當啟動Visual Studio .NET時,並不需要鍵入指令行,因此在本文不加詳述。
下一步是在表單中添加控件。首先為每個控件創建一個實例變量,然後初始化這些變量,最後將每個控件放置於表單上。當我們添加完控件後,就得到了我們想要的一個完整表單。
public class TempConverter : System.WinForms.Form { Label lTempFah = new Label(); Label lTempCel = new Label(); TextBox tTempFah = new TextBox(); TextBox tTempCel = new TextBox(); Button bnCtoF = new Button(); Button bnFtoC = new Button(); public TempConverter() { this.SetSize(180,90); this.BorderStyle = FormBorderStyle.FixedDialog; this.Text = "°C->°F / °F->°C"; this.StartPosition = FormStartPosition.CenterScreen; this.HelpButton = false; this.MaximizeBox = false; tTempCel.TabIndex = 0; tTempCel.SetSize(50,25); tTempCel.SetLocation(13,5); lTempCel.TabStop = false; lTempCel.Text = "°C"; lTempCel.SetSize(25, 25); lTempCel.SetLocation(65,5); tTempFah.TabIndex = 1; tTempFah.SetSize(50,25); tTempFah.SetLocation(90,5); lTempFah.TabStop = false; lTempFah.Text = "°F"; lTempFah.SetSize(25,25); lTempFah.SetLocation(142,5); bnCtoF.TabIndex = 2; bnCtoF.Text = "°C to °F"; bnCtoF.SetSize(70,25); bnCtoF.SetLocation(13,35); bnFtoC.TabIndex = 3; bnFtoC.Text = "°F to °C"; bnFtoC.SetSize(70,25); bnFtoC.SetLocation(90,35); this.Controls.Add(tTempCel); this.Controls.Add(lTempCel); this.Controls.Add(tTempFah); this.Controls.Add(lTempFah); this.Controls.Add(bnCtoF); this.Controls.Add(bnFtoC); }