共用方式為


教學課程:自定義數學測驗 WinForms 應用程式

在本系列四個教學課程中,您將製作數學測驗。 測驗包含四個隨機數學問題,測驗者會嘗試在指定的時間內回答。

本教學課程說明如何藉由清除預設值和自定義控件的外觀來增強測驗。

在本最後的教學課程中,您將瞭解如何:

  • 新增事件處理程式以清除預設的 NumericUpDown 控制項值。
  • 自訂測驗。

先決條件

本教學課程是以先前的教學課程為基礎,從 建立數學測驗 WinForms 應用程式開始。 如果您尚未完成這些教學課程,請先完成這些教學課程。

新增 NumericUpDown 控制件的事件處理程式

測驗包含 NumericUpDown 控件,讓參加測驗者用來輸入數字。 當您輸入答案時,您必須先選取預設值,或手動刪除該值。 藉由新增 Enter 事件處理程式,您可以更輕鬆地輸入答案。 當測驗接受者選取某個 NumericUpDown 控件並開始輸入不同的值時,此程式碼會選取並清除該控件中的目前值。

  1. 選取表單上的第一個 NumericUpDown 控件。 在 [屬性] 對話框中,選取工具列上的 事件 圖示。

    顯示 [屬性] 對話框工具列的螢幕快照。已標示包含閃電的圖示。

    [屬性] 中的 [事件] 索引標籤 會顯示您可以回應窗體上所選專案的所有事件。 在此情況下,所有列出的事件都與 NumericUpDown 控件有關。

  2. 選取 Enter 事件,輸入 answer_Enter,然後選取 Enter

    顯示屬性對話框的螢幕快照,並選擇了 Enter 事件。 在方法方塊中包含 answer_Enter。

    程式代碼編輯器隨即出現,並顯示您為 sum NumericUpDown 控件建立的 Enter 事件處理程式。

  3. answer_Enter 事件處理程式的 方法中,新增下列程式代碼:

    private void answer_Enter(object sender, EventArgs e)
    {
        // Select the whole answer in the NumericUpDown control.
        NumericUpDown answerBox = sender as NumericUpDown;
    
        if (answerBox != null)
        {
            int lengthOfAnswer = answerBox.Value.ToString().Length;
            answerBox.Select(0, lengthOfAnswer);
        }
    }
    

在此程式代碼中:

  • 第一行會宣告 方法。 其中包含名為 sender的參數。 在 C# 中,參數 object sender。 在 Visual Basic 中,它是顏色代碼 sender As System.Object。 這個參數是指事件引發的物件,也就是所謂的傳送者。 在此情況下,傳送者物件是 NumericUpDown 控制項。
  • 方法內的第一行將會將傳送者從泛型物件類型轉換為NumericUpDown控制項。 該行也會將 answerBox 名稱 指派給 NumericUpDown 控件。 表單上所有的 NumericUpDown 控制件都會使用此方法,而不只是加法問題的控制件。
  • 下一行會驗證 answerBox 是否成功轉換成 NumericUpDown 控件。
  • if 語句內的第一行會決定目前在 NumericUpDown 控件中的答案長度。
  • if 語句內的第二行會使用答案長度來選取控件中的目前值。

當測驗接受者選取控件時,Visual Studio 會引發此事件。 此程式代碼會選取目前的答案。 一旦測驗接受者開始輸入不同的答案,就會清除目前的答案,並以新的答案取代。

  1. Windows Forms 設計工具中,再次選取加法問題的 NumericUpDown 控件。

  2. 在 [事件] 頁面的 [屬性] 對話方塊中,尋找 [單擊] 事件,然後從下拉功能表中選取 [answer_Enter]。 這個事件處理程式是您剛才新增的事件處理程式。

  3. Windows Forms 設計工具中,選取減法問題的 NumericUpDown 控件。

  4. 在 [屬性] 對話方塊的 [事件] 頁面中,找出 [Enter 事件],然後從下拉選單中選取 [answer_Enter]。 這個事件處理程式是您剛才新增的事件處理程式。 針對 Click 事件重複此步驟。

  5. 針對乘法和除法 NumericUpDown 控件重複上述兩個步驟。

執行您的應用程式

  1. 儲存程式並加以執行。

  2. 啟動測驗,然後選取 NumericUpDown 控件。 系統會自動選取現有的值,然後在您開始輸入不同的值時清除。

    顯示具有四個隨機數學問題的測驗應用程式的螢幕快照。會選取第一個問題的預設答案。

自訂測驗

在本教學課程的最後一個部分中,您將探索一些自定義測驗的方式,並擴充您已學到的內容。

變更標籤的色彩

  • 使用 timeLabel 控件的 BackColor 屬性,在測驗中只保留五秒時,將這個標籤變成紅色。

    timeLabel.BackColor = Color.Red;
    
  • 在測驗結束時重設色彩。

播放正確答案音效

當正確答案輸入到 NumericUpDown 控制項時,播放聲音為測驗者提供提示。 若要實作這項功能,請為每個控件的 ValueChanged 事件撰寫事件處理程式。 每當測驗參與者變更控件的值時,就會引發這種類型的事件。

後續步驟

祝賀! 您已完成這一系列的教學課程。 您已在 Visual Studio IDE 中完成這些程式設計和設計工作:

  • 已建立使用 Windows Forms 的 Visual Studio 專案
  • 已新增標籤、按鈕和 NumericUpDown 控制件
  • 已新增定時器
  • 設定控制件的事件處理程式
  • 撰寫 C# 或 Visual Basic 程式代碼來處理事件

繼續學習另一個教學系列,了解如何製作配對遊戲。