在前兩步中,我們已經建立了表單並加入必要的控制項。現在邁向最後一步:撰寫回應使用者按鈕點擊的事件處理程式碼。這將賦予應用程式真正的互動能力。
首先建立 bnCtoF_Click 方法來處理「C to F」按鈕的點擊事件:
private void bnCtoF_Click(Object sender, EventArgs e) {
double dTempCel = 0;
double dTempFah = 0;
try {
dTempCel = tTempCel.Text.ToDouble();
} catch (Exception) {
tTempCel.Clear();
tTempFah.Clear();
return;
}
dTempFah = 1.8 * dTempCel + 32;
tTempFah.Text = dTempFah.ToString();
tTempFah.Focus();
tTempFah.SelectionStart = 0;
tTempFah.SelectionLength = 0;
tTempCel.Focus();
tTempCel.SelectionStart = 0;
tTempCel.SelectionLength = 0;
}
程式碼解析:
dTempCel,否則清空兩個文字方塊並直接返回。華氏 = 1.8 × 攝氏 + 32 計算結果。對應的「F to C」按鈕處理邏輯類似,只是公式相反:
private void bnFtoC_Click(Object sender, EventArgs e) {
double dTempCel = 0;
double dTempFah = 0;
try {
dTempFah = tTempFah.Text.ToDouble();
} catch (Exception) {
tTempCel.Clear();
tTempFah.Clear();
return;
}
dTempCel = (dTempFah - 32) / 1.8;
tTempCel.Text = dTempCel.ToString();
tTempCel.Focus();
tTempCel.SelectionStart = 0;
tTempCel.SelectionLength = 0;
tTempFah.Focus();
tTempFah.SelectionStart = 0;
tTempFah.SelectionLength = 0;
}
在類別的建構函式中,使用 += 運算子將事件處理方法註冊到按鈕的 Click 事件:
bnCtoF.Click += new EventHandler(this.bnCtoF_Click);
bnFtoC.Click += new EventHandler(this.bnFtoC_Click);
以下是整合後的完整 TempConverter 類別:
using System;
using System.WinForms;
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);
bnCtoF.Click += new EventHandler(this.bnCtoF_Click);
bnFtoC.TabIndex = 3;
bnFtoC.Text = "F to C";
bnFtoC.SetSize(70, 25);
bnFtoC.SetLocation(90, 35);
bnFtoC.Click += new EventHandler(this.bnFtoC_Click);
this.Controls.Add(tTempCel);
this.Controls.Add(lTempCel);
this.Controls.Add(tTempFah);
this.Controls.Add(lTempFah);
this.Controls.Add(bnCtoF);
this.Controls.Add(bnFtoC);
}
public static void Main() {
Application.Run(new TempConverter());
}
private void bnCtoF_Click(Object sender, EventArgs e) {
double dTempCel = 0;
double dTempFah = 0;
try { dTempCel = tTempCel.Text.ToDouble(); }
catch (Exception) {
tTempCel.Clear();
tTempFah.Clear();
return;
}
dTempFah = 1.8 * dTempCel + 32;
tTempFah.Text = dTempFah.ToString();
tTempFah.Focus();
tTempFah.SelectionStart = 0;
tTempFah.SelectionLength = 0;
tTempCel.Focus();
tTempCel.SelectionStart = 0;
tTempCel.SelectionLength = 0;
}
private void bnFtoC_Click(Object sender, EventArgs e) {
double dTempCel = 0;
double dTempFah = 0;
try { dTempFah = tTempFah.Text.ToDouble(); }
catch (Exception) {
tTempCel.Clear();
tTempFah.Clear();
return;
}
dTempCel = (dTempFah - 32) / 1.8;
tTempCel.Text = dTempCel.ToString();
tTempCel.Focus();
tTempCel.SelectionStart = 0;
tTempCel.SelectionLength = 0;
tTempFah.Focus();
tTempFah.SelectionStart = 0;
tTempFah.SelectionLength = 0;
}
}
到此,你已完整體驗了 C# 視窗應用程式開發的核心流程:建立表單、配置控制項、撰寫事件回應。雖然這個範例很簡單,但「麻雀雖小,五臟俱全」。掌握這些基礎後,你就能進一步探索 C# 強大的功能,開發更豐富的應用程式。