共用方式為


動作窗格概觀

這很重要

從 Office 2024 開始,Microsoft Word 的“操作”功能將被取消。 此功能僅適用於以下版本的 Microsoft Office 中的 Microsoft Word:

  • Microsoft 365
  • Office LTSC 專業增強版 2021
  • Office LTSC 標準版 2021
  • Office 專業增強版 2016、2019
  • Office Standard 2016, 2019

操作面板是可自定義的文件動作工作窗格,附加至特定 Microsoft Office Word 檔或 Microsoft Office Excel 活頁簿。 執行窗格裝載於 Office 工作窗格內,以及其他內建工作窗格,例如 Excel 中的 [XML 來源 ] 工作窗格,或 Word 中的 [樣式] 和 [格式化] 工作窗格。 您可以使用 Windows Forms 控制件或 WPF 控制項來設計動作窗格使用者介面。

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

您只能在 Word 或 Excel 的檔案層級自定義中建立動作窗格。 您無法在 VSTO 增益集 中建立動作窗格。 如需詳細資訊,請參閱 Office 應用程式和項目類型所提供的功能

備註

[動作] 窗格與自定義工作窗格不同。 自定義工作窗格與應用程式相關聯,而不是特定檔。 您可以針對某些Microsoft Office 應用程式,在 VSTO 載入巨集中建立自定義工作窗格。 如需詳細資訊,請參閱 自定義工作窗格

顯示執行窗格

執行窗格是由 ActionsPane 類別表示。 當您建立文件級別專案時,您可以在專案中透過 ActionsPane(適用於 Excel)或 ThisWorkbook(適用於 Word)類別的 ThisDocument 欄位,來獲取此類別的實例。 若要顯示執行窗格,請將 Windows Forms 控件新增至 Controls 欄位的 ActionsPane 屬性。 下列程式代碼範例會將名為 actions 的控件新增至執行窗格。

this.ActionsPane.Controls.Add(actions);

當您明確將控件新增至該窗格時,動作窗格就會在運行時間顯示。 顯示動作窗格之後,您可以動態新增或移除控制件,以回應用戶的動作。 一般而言,您會在 StartupThisDocument 的事件處理程式中的 ThisWorkbook,新增程序代碼以顯示執行窗格,以便在使用者第一次開啟文件時,執行窗格是可見的。 不過,您可能只想顯示動作窗格,以回應檔中用戶的動作。 例如,您可以將程式代碼新增至文件中控制項的Click事件。

將多個控件新增至執行窗格

當您將多個控制項新增至動作窗格時,您應該將使用者控制件中的控制項分組,然後將使用者控制項新增至 Controls 屬性。 此程式包含下列步驟:

  1. 動作窗格控件使用者控件 項目新增至您的專案,以建立動作窗格的使用者介面(UI)。 這兩個專案都包含自定義 Windows Forms UserControl 類別。 [動作窗格控件] 和 [使用者控件] 專案相等;唯一的差異是其名稱。

  2. 使用設計工具或撰寫程式代碼,將 Windows Forms 控制件新增至 UserControl

    備註

    您也可以透過將 WPF UserControl 新增至 Windows Forms UserControl,將 WPF 控制項新增至動作窗格。 如需詳細資訊,請參閱 在 Office 方案中使用 WPF 控件

  3. 將自定義使用者控制項的實例新增到您專案中包含在ActionsPane欄位的控制項集合內,該欄位屬於ThisWorkbook類別(用於 Excel)或ThisDocument類別(用於 Word)。

    如需更詳細示範此程式的範例,請參閱 如何:將動作窗格新增至 Word 檔或 Excel 活頁簿

隱藏執行窗格

雖然 類別 ActionsPane 具有 Hide 方法和 Visible 屬性,但是您無法使用類別本身的任何成員 ActionsPane ,從使用者介面移除動作窗格。 Hide呼叫 方法或將 Visible 屬性設定為 false 只會隱藏執行窗格上的控件;它不會隱藏工作窗格。

若要隱藏方案中的工作窗格,您有數個選項:

  • 針對 Word,將 Visible 代表 [文件動作] 工作窗格的 TaskPane 物件屬性設定為 false。 下列程式代碼範例是要從專案中的 ThisDocument 類別執行。

    this.Application.TaskPanes[Word.WdTaskPanes.wdTaskPaneDocumentActions].Visible = false;
    
  • 若為 Excel,請將 DisplayDocumentActionTaskPane 對象的 屬性 Application 設定為 false。 下列程式代碼範例是要從專案中的 ThisWorkbook 類別執行。

    this.Application.DisplayDocumentActionTaskPane = false;
    
  • 針對 Word 或 Excel,您也可以將命令行的 屬性設定 Visiblefalse。 下列程式代碼範例是要從專案中的 ThisDocumentThisWorkbook 類別執行。

    this.Application.CommandBars["Task Pane"].Visible = false;
    

開啟檔時清除執行窗格

當使用者在執行窗格時儲存檔時,每次開啟檔時都會顯示執行窗格,無論動作窗格是否包含任何控制件。 如果您想控制其出現時間,請在ClearActionsPaneStartup事件處理程式中,呼叫ThisDocument字段的ThisWorkbook方法,以確保檔案開啟時執行窗格不可見。

判斷動作窗格何時關閉

當執行窗格關閉時,不會引發任何事件。 雖然 類別 ActionsPane 具有 VisibleChanged 事件,但當使用者關閉動作窗格時,不會引發此事件。 相反地,當執行窗格上的控件藉由呼叫 Hide 方法或將 屬性設定 Visiblefalse 來隱藏時,就會引發這個事件。

當使用者關閉執行窗格時,用戶可以在應用程式的使用者介面 (UI) 中執行下列其中一個程式,再次顯示它。

使用 Word 或 Excel 的 UI 顯示執行窗格
  1. 在功能區上,按一下[檢視] 索引標籤

  2. 在 [ 顯示/隱藏 ] 群組中,按兩下 [ 檔案動作] 切換按鈕。

程式動作面板事件

您可以將多個使用者控件新增至執行窗格,然後撰寫程式代碼以回應檔上的事件,方法是顯示和隱藏使用者控制件。 如果您將 XML 架構元素對應至檔,每當插入點位於其中一個 XML 元素內時,就可以在動作窗格中顯示特定使用者控制項。 如需詳細資訊,請參閱如何:將架構對應至Visual Studio內的 Word 檔,以及如何:將架構對應至Visual Studio內的工作表

您也可以撰寫程式代碼來回應任何物件的事件,包括主控件、應用程式或檔案事件。 如需詳細資訊,請參閱 逐步解說:針對 NamedRange 控制項的事件進行程式設計

將數據系結至執行窗格上的控制件

[動作] 窗格上的控件與 Windows Forms 上的控件具有相同的數據系結功能。 您可以將控制元件系結至數據來源,例如數據集、具類型的數據集和 XML。 如需詳細資訊,請參閱 數據系結和 Windows Forms

您可以將動作窗格上的控制項和檔案上的控制項系結至相同的資料集。 例如,您可以在操作窗格上的控制項與工作表上的控制項之間建立主/從關係。 如需詳細資訊,請參閱 逐步解說:將數據系結至Excel動作窗格上的控制件

驗證執行窗格控件中的數據

如果您在控制項的事件處理程式中,在動作窗格上顯示訊息框,當焦點從控制項移至訊息框時,可能會第二次引發事件。 若要防止此問題,請使用 ErrorProvider 控件來顯示任何驗證錯誤訊息。

使用者控制堆疊順序

如果您使用多個使用者控制項,可以撰寫程式碼,以便在動作窗格上適當地堆疊控制項,無論其是垂直還是水平對接。 您可以使用 StackStyle 屬性的列舉,設定在動作窗格上使用者控制項的 StackOrder 堆疊順序。 如需詳細資訊,請參閱 如何:管理動作窗格上的控件配置

屬性 StackOrder 可以採用下列 StackStyle 列舉值。

堆疊樣式 定義
從底部 從操作窗格底部堆疊。
從左邊 從操作窗格左側堆疊。
從右 從動作窗格的右側開始堆疊。
從頂部 從動作窗格的頂部開始堆疊。
沒有 未定義堆疊順序;訂單是由開發人員所控制。

下列程式代碼會將 StackOrder 屬性設定為從動作窗格頂端堆疊使用者控制件。

this.ActionsPane.StackOrder = Microsoft.Office.Tools.StackStyle.FromTop;

錨點控件

如果使用者在運行時間調整動作窗格的大小,控制件可以使用動作窗格來重設大小。 您可以使用 Anchor Windows Forms 控制件的 屬性,將控件錨定到動作窗格。 您也可以以相同方式將 Windows Forms 控件錨定在使用者控件上。 如需詳細資訊,請參閱 如何:錨定 Windows Forms 上的控件

調整動作窗格的大小

您無法直接變更 ActionsPane 的大小,因為 ActionsPane 被內嵌在工作窗格中。 不過,您可以藉由設定 Width 代表工作窗格之 的 CommandBar 屬性,以程式設計方式變更工作窗格的寬度。 當工作窗格在水平停駐或浮動时,您可以變更其高度。

不建議以程式設計方式調整工作窗格的大小,因為使用者應該能夠選取最符合其需求的工作窗格大小。 不過,如果您必須調整工作窗格的寬度,您可以使用下列程式代碼來達成這項工作。

this.CommandBars["Task Pane"].Width = 200;

重新定位動作窗格

您無法直接重新置放 ActionsPane ,因為它內嵌在工作窗格中。 不過,您可以設定 Position 代表工作窗格的 CommandBar 屬性,以程式設計方式移動工作窗格。

不建議以程式設計方式重新置放工作窗格,因為使用者應該能夠在最符合其需求的畫面上選擇工作窗格位置。 不過,如果您必須將工作窗格移至特定位置,您可以使用下列程式代碼來達成這項工作。

this.CommandBars["Task Pane"].Position =
    Microsoft.Office.Core.MsoBarPosition.msoBarLeft;

備註

終端使用者可以隨時手動重新定位工作窗格。 無法確保工作窗格會保留在您以程序設計方式指示的位置停駐。 不過,您可以檢查方向變更,並確定動作窗格上的控件會以正確的方向堆疊。 如需詳細資訊,請參閱 如何:管理動作窗格上的控件配置

設定 TopLeft 屬性 ActionsPane 並不會變更其位置,因為 ActionsPane 物件內嵌在工作窗格中。

如果工作窗格未被停駐,您可以設定 TopLeft 屬性,這些屬性代表工作窗格。 下列程式代碼會將未停駐的工作窗格移至檔的左上角。

if (this.CommandBars["Task Pane"].Position == 
    Microsoft.Office.Core.MsoBarPosition.msoBarFloating)
{
    this.CommandBars["Task Pane"].Top = 0;
    this.CommandBars["Task Pane"].Left = 0;
}