回文章列表
C#10 分鐘閱讀2026年7月11日

C# WinForms:從零做出第一支視窗程式

#C##WinForms#.NET#桌面應用

文章目錄

為什麼學 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 顯示結果 - 做一個簡單的帳號登入畫面

相關課程

C# 物件導向與桌面程式

練透物件導向四大支柱:類別與物件、封裝、繼承與多型、介面,再進入 WinForms 桌面應用開發,學會用控件與 DataGridView 打造圖形化介面,最後補上檔案讀寫與 CSV 存讀,讓程式能保存資料。

查看課程內容