首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> C# 入門

C# 入門三部曲:第三步 - 實作使用者事件回應程式碼

     編輯:C# 入門

完成溫度轉換器的最後一步:事件處理

在前兩步中,我們已經建立了表單並加入必要的控制項。現在邁向最後一步:撰寫回應使用者按鈕點擊的事件處理程式碼。這將賦予應用程式真正的互動能力。

攝氏轉華氏按鈕的事件處理

首先建立 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;
}

程式碼解析:

  • 第 4-8 行 (try 區塊): 從攝氏文字方塊取得數值。若轉換成功則存入 dTempCel,否則清空兩個文字方塊並直接返回。
  • 第 9 行: 套用轉換公式 華氏 = 1.8 × 攝氏 + 32 計算結果。
  • 第 10-15 行: 將結果顯示在華氏文字方塊,並將游標移至兩個文字方塊的開頭位置,避免長數字導致使用者需捲動才能看見開頭。

華氏轉攝氏按鈕的事件處理

對應的「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# 強大的功能,開發更豐富的應用程式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved