分享方式:


Office 檔上的 Windows Forms 控件限制

新增至 Microsoft Office Word 檔或 Microsoft Office Excel 工作表的 Windows Forms 控制件,以及新增至 Windows Forms 的 Windows Forms 控件之間有一些差異。 例如,當您將Button控件新增至檔時,、Anchor、 和 TabIndexDock屬性不會如您所預期般運作。

其中許多差異是由 Windows Forms 控制件裝載於檔的方式所造成。 將 Windows Forms 控件新增至檔時,Visual Studio Tools for Office 運行時間會內嵌 ActiveX 控件,然後在文件中裝載 Windows Forms 控件。 Windows Forms 控制件不會直接內嵌在檔中。

適用於: 本主題中的資訊適用於 Excel 和 Word 的文件層級專案和 VSTO 載入宏專案。 如需詳細資訊,請參閱 Office 應用程式 lication 和項目類型所提供的功能。

Windows Forms 控制件的方法和屬性限制

Windows Forms 控件有許多方法與屬性在 Windows Form 上無法以相同方式在文件上運作,因此,建議不要使用它們。 例如,設定 和 Anchor 之類的Dock屬性只會影響控件相對於容器 ActiveX 控件的位置,而不是檔。 以下是 Word 和 Excel Windows Forms 控件不支援的方法和屬性清單:

您也無法設定 Left 與 Word 檔上文字一致之 Windows Forms 控件的 或 Top 屬性。 在下列情況下,Windows Forms 控件會與文字一致新增:

  • 您以程式設計方式將控件新增至 Word 檔,並使用指定位置範圍的方法。

  • 您可以在設計時間將 Windows Forms 控制項新增至 Word 檔。 您可以藉由修改設計工具中的控制項來變更此專案。

Office 檔上的 Windows Forms 控件差異

Windows Forms 控件在 Office 文件上的行為通常與 Windows Form 上的行為相同,但有些差異確實存在。 下表描述 Office 檔上 Windows Forms 控件存在的差異。

功能 差數
控制定位順序 您無法透過放在 Excel 工作表或 Word 檔上的控制件進行索引標籤。
控件群組 您無法使用 GroupBox 控制項在 Office 檔中包含其他控制項。 當您將多個單選按鈕直接新增至檔時,單選按鈕不會互斥。 您可以撰寫程式代碼,讓單選按鈕互斥;不過,慣用的方法是將單選按鈕新增至使用者控件,然後將使用者控件新增至檔。 如需詳細資訊,請參閱 Office 開發範例和逐步解說中的 Word 控件範例或 Excel 控件範例。
控制項類型 在檔上使用的 Windows Forms 控件會包裝在 Visual Studio Tools for Office 運行時間提供的類別中,以提供 Excel 工作表或 Word 檔專屬的控件其他功能。 例如,如果您在 Excel 工作表上有 Button 控件,請務必指定類型, Button 而不是 Button 在參考或轉換物件時。
控制位置和大小 控件的大小和位置取決於屬於容器 ActiveX 控件一部分的屬性。 ActiveX 控件屬性接受的值與 Windows Forms 控件的對等屬性不同。 當您設定控制件的TopLeftHeightWidth 屬性時,它會以點為單位來測量,而不是以像素為單位。
Word 檔上的控制位置 如果您將控件新增至以流程為基礎的版面配置,請記住控件會在內容變更時隨內容一起流動。 當您從 [工具箱 ] 拖曳控件時,無法將控件錨定至段落,因為控件會以文字的方式新增至 Word 檔。 如果您使用其他方法來新增控件,例如按兩下控件,則會根據您為插入圖片設定的 Word 選項插入控制項。

您無法設定 Left 內嵌文字之控件的 或 Top 屬性。

您無法將控制件放在頁首或頁尾,或放在子檔中。
控制事件 選取控件時,它會依下列順序引發事件:

1. Enter
2. GotFocus

取消選取控件時,它會以下列順序引發事件:

1. Leave
2. Validating
3. Validated
4. LostFocus
控制調整 當您將檔的縮放設定變更為 100% 以外的任何控件時,控件會停用,不過它們似乎會隨著檔縮放。 例如,如果您在檔的縮放比例為 130% 時按鍵,則會顯示控件已停用的訊息,直到縮放設定為 100%。 當您將縮放比例變更為 100% 時,控件會正常運作。
控制屬性值 雖然 Windows Form 上控件的屬性會設定為整數值,但它們會設定為 Word 檔上控制件的單一。 在Excel中,控件的屬性值會設定為 double。 Height如果工作表上控件的 和 Width 屬性超過工作表或畫面的大小,則會截斷值。
控件重設大小 如果您使用八個重設大小控點之一來調整檔上的控件大小,則在重新選取控件之前,新的控件維度不會反映在 [屬性 ] 視窗中。
控件行為 當工作表視窗分割時,Excel 工作表上的控件可能會無法預期。 例如,工作表上的 存取 TextBox 可能只能在其中一個視窗中使用。
控制命名 您無法使用保留字來命名控制件。 例如,如果您將 新增 Button 至工作表,並將名稱變更為 System,則建置專案時會發生錯誤。
以程序設計方式新增控制件 請勿使用 控制項的建構函式,在運行時間將控件新增至您的檔。 請改用 Visual Studio Tools for Office 運行時間 所提供的協助程式方法。 例如,使用 AddButton 方法將按鈕新增至工作表。 如果您想要新增這些協助程式方法不支援的控制項,您可以使用 AddControl 方法。 如需詳細資訊,請參閱 在運行時間將控件新增至 Office 檔。
複製控制項 如果您複製 Windows Form 控制項並在執行時間貼到檔中,則會將空白容器 ActiveX 控制件貼到檔案中。 Windows Forms 控制項不會出現在新的位置,原始控件背後的程式代碼不會複製到容器 ActiveX 控制件。

檔層級專案中的限制

在檔上使用 Windows Forms 控制件的一些限制對檔層級專案而言是唯一的。

在設計時間控制支援

當 Visual Studio 設計工具中開啟 Excel 工作表或 Word 檔時,某些 Windows Forms 控件會從 [工具箱 ] 中移除。 這是因為技術限制,或是因為 Word 或 Excel 中已有功能可用。 Excel 和 Word 專案支援檔案焦點時出現在 工具箱 中的所有 Windows Forms 控制件和其他元件,您也可以將第三方控制項新增至工作表或檔。

注意

當檔受到保護時,所有控件都會從 [工具箱 ] 中移除。 如需文件保護的相關信息,請參閱 檔層級解決方案中的文件保護。

注意

第三方控件必須將 ComVisibleAttribute 屬性設定為 true ,才能用於 Office 方案。

工具箱中無法使用下列控制項和元件:

支援舊版 ActiveX 控制件

如果您建立使用包含 ActiveX 控制件的現有 Word 檔或 Excel 活頁簿的檔層級 Office 專案,則 ActiveX 控制件的功能不會遺失;不過,不支援從 Visual Studio 將新的 ActiveX 控件新增至您的檔。 例如,如果您的 Word 檔有執行 Visual Basic for Applications (VBA) 宏的 [控件 ] 工具箱中的按鈕,它將會在 Office 專案中使用文件之後繼續執行宏。 不過,建議您移除 ActiveX 控制件和 VBA 宏,並以 Windows Forms 控件和 Managed 程式代碼取代它們。