為什麼學 WinForms?
學完 C# 基礎語法,很多同學問我:「那我要怎麼做出一個有畫面的程式?」
WinForms 是最快的答案。不需要前端知識,不需要 HTML/CSS,直接拖拉元件就能做出視窗程式。
建立專案
1. 開啟 Visual Studio 2. 新增專案 → Windows Forms App (.NET) 3. 專案名稱:BmiApp
範本名稱後面那個 (.NET) 要看清楚——另一個長得很像的 Windows Forms App (.NET Framework) 是舊版,兩者不通用。本篇的程式碼需要 C# 9.0 以上,用 .NET 5 之後的範本建立都符合,建議直接選現行的 LTS 版本。
設計介面
從工具箱拖出: - 2 個 Label(身高、體重) - 2 個 TextBox(輸入欄位) - 1 個 Button(計算) - 1 個 Label(顯示結果)
雙擊 Button 進入程式碼編輯器。
撰寫邏輯
private void btnCalculate_Click(object sender, EventArgs e)
{
// 取得輸入值
if (!double.TryParse(txtHeight.Text, out double height) ||
!double.TryParse(txtWeight.Text, out double weight))
{
lblResult.Text = "請輸入有效的數字";
lblResult.ForeColor = Color.Red;
return;
}
// 計算 BMI(身高要轉換成公尺)
double heightM = height / 100;
double bmi = weight / (heightM * heightM);
// 判斷結果
string status = bmi switch
{
< 18.5 => "體重過輕",
< 24.0 => "正常範圍",
< 27.0 => "體重過重",
_ => "肥胖"
};
lblResult.Text = $"BMI:{bmi:F1}({status})";
lblResult.ForeColor = Color.Black;
}幾個重點
TryParse vs Parse:用 TryParse 避免使用者輸入文字時程式崩潰,這是好習慣。
switch expression:C# 8.0 引入的語法,比一長串 if-else 更簡潔。不過上面那種 < 18.5 => 直接比大小的寫法叫關係模式(relational pattern),是 C# 9.0 才加進來的,所以這段程式碼實際需要 C# 9.0 以上——用 .NET 5 之後的專案範本建立就一定符合。
:F1:格式化字串,F = 浮點數,1 = 保留 1 位小數。
下一步
BMI 計算機只是開始。學會之後可以試試: - 加入清除按鈕(重置輸入欄位) - 用 MessageBox 顯示結果 - 做一個簡單的帳號登入畫面