共用方式為


建立 Windows Form 控制項 (C++)

更新:2007 年 11 月

Windows Form 控制項是可以加入 Windows Form 應用程式 (以 Common Language Runtime 為目標的 GUI 應用程式) 的元件。以 Visual C++ 撰寫的 Windows Form 應用程式會以新的 Visual C++ 語法來使用 .NET Framework 類別和其他 .NET 功能。

在本程序中,您會建立顯示數字的 Windows Form 控制項。每次使用者按一下應用程式中的標籤時,這個數字便會遞增。此外,您還要建立 Windows Form 應用程式專案來測試控制項。

本逐步解說將涵蓋下列項目:

  • 建立新專案。

  • 設計控制項。

  • 將自訂屬性加入至控制項。

  • 加入專案以測試控制項。

  • 將控制項放入應用程式中。

  • 執行應用程式。

必要條件

本主題假設您已了解 C++ 語言的基礎。如果您才剛開始學習 C++,建議您參考 Herb Schildt 所著的《C++ Beginner's Guide》。您可以在 https://www.microsoft.com/taiwan/vstudio/ 找到這份文件的線上版本。

視訊的連結 如需觀看示範影片,請參閱影片 HOW TO:建立 Windows Form 控制項 (C++) (英文)。

建立新專案

您在本章節中使用的 Windows Form 控制項專案範本會建立使用者控制項,這是一種包含其他控制項的複合控制項 (Composite Control)。

或者,您可以從 Control 類別 (您的程式碼必須負責繪製控制項) 或 Component 類別 (沒有 UI 的控制項) 直接衍生類別,以建立 Windows Form 控制項。

若要建立新的 Windows Form 控制項專案

  1. 在 [檔案] 功能表中,按一下 [新增],然後按一下 [專案]。

  2. 在 [專案類型] 窗格中,選取 [Visual C++] 節點中的 [CLR],然後選取 [Visual Studio 安裝的範本] 窗格中的 [Windows Form 控制項程式庫]。

    輸入專案名稱,例如 clickcounter。

    輸入方案名稱 (請使用不同的名稱),例如 controlandtestapp。

    您可以接受預設位置、輸入需要的位置,或瀏覽至您要儲存此專案的目錄。

  3. [Windows Form 設計工具] 便會開啟,並顯示控制項設計介面上的區域,讓您在其中加入想要放置的控制項。

設計控制項

在這個步驟中,您要將 Label 控制項加入至控制項設計介面。接著,要設定此控制項本身以及它所包含的 Label 控制項的一些屬性。

若要設定使用者控制項的屬性

  1. 如果看不到 [屬性] 視窗,請按一下 [檢視] 功能表上的 [屬性視窗]。

    按一下控制項將它選取,並設定它的屬性,如下所示:

    • 將 [Size] 屬性設定為 100, 100。

    • 將 [BorderStyle] 設定為 [Fixed3D]。

      將控制項放入應用程式之後,您就會看見標籤界限。

  2. 如果看不到 [工具箱],請從 [檢視] 功能表中選擇 [工具箱]。

    Label 控制項從 [工具箱] 拖曳到設計介面,並將其放在靠近控制項中央的位置。

    設定標籤的下列屬性:

    • 將 [BorderStyle] 設定為 [FixedSingle]。

    • 將 [Text] 設定為數字 [0] (零)。

    • 將 [Autosize] 設定為 [False]。

    • 將 [Size] 設定為 [30, 20]

    • 將 [TextAlign] 設定為 [MiddleCenter]。

    保持 [Name] 屬性 (在程式碼中用來參考它的方式) 不變,也就是 [label1]。控制項應該會與以下相似:

    控制項的配置

  3. 按兩下標籤,加入標籤 Click 事件 (標籤的預設事件) 的事件處理常式。

  4. clickcounter.h 檔會出現在編輯區域中,並具有一個空白事件處理常式方法。

    注意事項:

    如果需要更多空間,請按一下 [工具箱] 或 [屬性] 視窗的 [關閉] 方塊,或是解除固定讓視窗自動隱藏。

  5. 將游標移至 label1_Click 方法的左邊大括號之後,按 ENTER 鍵,然後輸入:

    int temp = System::Int32::Parse(label1->Text);
    temp++;
    label1->Text = temp.ToString();
    

    在輸入範圍解析運算子 (::)、點運算子 (.) 或箭號運算子 (->) 之後,IntelliSense 便會顯示有效選項的清單。您可以反白顯示某個項目並按 TAB 或 ENTER 鍵,或者按兩下某個項目,將該項目插入至程式碼中。

    此外,當您輸入方法的左括號時,Visual Studio 會針對每個方法多載顯示有效的引數型別。

將自訂屬性加入至控制項

在這個步驟中,您會定義自訂屬性,以判斷當使用者按一下標籤,或是當使用者按一下控制項上的任何位置時,在控制項上顯示的數字是否有遞增。

若要將自訂屬性加入至控制項

  1. 將游標放在位於 clickcounterControl.h 檔案頂端第一個 public 範圍指示器的冒號後面,按 ENTER 鍵,然後輸入下列文字:

    property bool ClickAnywhere {
        bool get() {
            return (label1->Dock == DockStyle::Fill);
        }
        void set(bool val) {
            if (val) 
                label1->Dock = DockStyle::Fill;
            else 
                label1->Dock = DockStyle::None;
        }
    }
    

    當您將控制項的 ClickAnywhere 屬性設定為 true 時,標籤的 Dock 屬性便會設定為 DockStyle::Fill,而且標籤會填滿整個控制項介面。按一下控制項介面上的任何位置都會引發標籤 Click 事件,讓標籤上的數字遞增。

    ClickAnywhere 屬性是 false (預設值) 時,標籤的 Dock 屬性是設為 DockStyle::None。標籤不會填滿控制項,而且按一下控制項時,必須落在標籤界限內才會引發標籤 Click 事件而讓數字遞增。

  2. 建置使用者控制項。在 [建置] 功能表上,選取 [建置方案]。

    如果沒有發生錯誤,就會產生檔案名稱為 clickcounter.dll 的 Windows Form 控制項。您可以在專案目錄結構中找到這個檔案。

加入專案以測試控制項

在這個步驟中,您會建立 Windows Form 應用程式專案,並會在其中將 clickcounter 控制項的執行個體放在表單上。

注意事項:

您可以使用 Visual C++ 或其他 .NET 語言 (例如 C# 或 Visual Basic) 撰寫 Windows Form 應用程式,以建立用以測試控制項。

若要建立 Windows Form 應用程式專案

  • 在 [檔案] 功能表上,選取 [新增],然後按一下 [專案]。

您也可以在 [方案總管] 中,以滑鼠右鍵按一下 [controlandtestapp] 方案,指向 [加入],然後按一下 [新增專案],將專案加入至方案。

  1. 在 [專案類型] 窗格中,選取 [Visual C++] 節點中的 [CLR],然後選取 [Visual Studio 安裝的範本] 窗格中的 [Windows Form 應用程式]。

    輸入專案名稱,例如 testapp。

    請務必選取 [加入至方案],而不要接受 [方案] 下拉式清單中的預設 [建立新方案] 設定,然後按一下 [確定]。

  2. 新專案的 [Windows Form 設計工具] 隨即開啟,並顯示與此圖相同的新表單,名稱為 [Form1]:

    新建的表單

若要將控制項加入至工具箱

  1. 將參考加入至控制項。在 [專案] 功能表中,選取 [參考],或是以滑鼠右鍵按一下 [方案總管] 中的 [testapp] 專案,再按一下 [參考]。

    依序按一下 [加入新參考] 按鈕、[專案] 索引標籤 (您要將參考加入至這個方案中的另一個專案),然後選取 [clickcounter] 專案。按兩次 [確定] 按鈕。

  2. 如果看不到 [工具箱] 視窗,請從 [檢視] 功能表選取 [工具箱]。

  3. 以滑鼠右鍵按一下 [工具箱],然後按一下 [選擇項目]。

    按一下 [瀏覽] 按鈕,在方案目錄結構中找出 clickcounter.dll 檔,將它選取,然後按一下 [開啟]。

    clickcounter 控制項會顯示在 [.NET Framework 元件] 清單中,並附有核取記號。按一下 [確定]。

    控制項會出現在 [工具箱] 中,並附有預設的「工具」圖示。

將控制項放入應用程式中

在這個步驟中,您會在應用程式表單上放置兩個控制項的執行個體,並設定它們的屬性。

將控制項的執行個體放在表單上

  1. 從 [工具箱] 中拖曳兩個 [clickcounter] 控制項執行個體,將它們放置在表單上,不要讓它們重疊。

    如果您要讓表單變寬,請按一下表單予以選取,並將其中一個選取控點向外拖曳。

  2. 如果看不到 [屬性] 視窗,請從 [檢視] 功能表選取 [屬性]。

    如果屬性有依類別予以組織,[ClickAnywhere] 屬性便會位於 [屬性視窗] 的 [其他] 區段中。

  3. 按一下表單上的一個 [clickcounter] 控制項的執行個體予以選取,然後將它的 [ClickAnywhere] 屬性設定為 true。

  4. 保留另一個 [clickcounter] 控制項執行個體的 [ClickAnywhere] 屬性設定值為 false (預設值)。

  5. 在 [方案總管] 中,以滑鼠右鍵按一下 [testapp] 專案,然後選取 [設定為啟始專案]。

  6. 從 [建置] 功能表中,選取 [重建方案]。

    您應該會看到兩個專案都順利建置完成。

執行應用程式

在這個步驟中,您會執行應用程式,並會按一下控制項予以測試。

若要測試應用程式

  1. 從 [偵錯] 功能表中選取 [開始偵錯]。

    表單隨即出現,並且可以看見兩個控制項執行個體。

  2. 執行應用程式,並分別按一下兩個 [clickcounter] 控制項:

    • 按一下其 [ClickAnywhere] 設定為 true 的控制項。

      當您按一下控制項上的任何地方時,標籤上的數字都會遞增。

    • 按一下其 [ClickAnywhere] 設定為 false 的控制項。

      只有當您按一下可見的標籤界限內時,標籤上的數字才會遞增。下列螢幕擷取畫面顯示,在按過幾次控制項之後,應用程式的可能外觀。

顯示控制項的測試應用程式

  1. 按一下 [Form1] 視窗右上角的 [關閉] 方塊,關閉測試應用程式。

後續步驟

上一個主題使用 .NET Framework 建立 Windows Form 應用程式 (C++) | 下一個主題使用 DirectX 建立遊戲 (C++)

請參閱

工作

Visual C++ 導覽

參考

System.Windows.Forms

其他資源

建立 Windows 架構的應用程式

Windows Form 控制項