Office 專案中的事件
每個 Office 專案範本會自動產生數個事件處理常式。 文件層級自訂的事件處理常式與 VSTO 增益集的事件處理常式有些許不同。
適用對象:本主題資訊適用於文件層級的專案和 VSTO 增益集專案。 請參閱依 Office 應用程式和專案類型提供的功能。
文件層級專案
Visual Studio 會在文件層級自訂中為新的或現有的文件或工作表,提供產生的後置程式碼。 這個程式碼會引發兩個不同的事件: Startup 和 Shutdown。
Startup 事件
在執行文件且組件中的所有初始設定程式碼都已執行之後,每個主項目 (文件、活頁簿或工作表) 都會引發 Startup 事件。 這是在程式碼執行的類別建構函式中,所執行的最後動作。 如需主項目的詳細資訊,請參閱主項目和主控制項概觀。
當您建立文件層級專案時,Visual Studio 會在產生的程式碼檔案中建立 Startup 事件的事件處理常式:
如果是 Microsoft Office Word 專案,則事件處理常式的名稱為
ThisDocument_Startup
。如果是 Microsoft Office Excel 專案,則事件處理常式有下列名稱:
Sheet1_Startup
Sheet2_Startup
Sheet3_Startup
ThisWorkbook_Startup
Shutdown 事件
當已載入您程式碼的應用程式定義域即將卸載時,每個主項目 (文件或工作表) 都會引發 Shutdown 事件。 在卸載時,於類別中呼叫它是最後要執行的動作。
當您建立文件層級專案時,Visual Studio 會在產生的程式碼檔案中建立 Shutdown 事件的事件處理常式:
如果是 Microsoft Office Word 專案,則事件處理常式的名稱為
ThisDocument_Shutdown
。如果是 Microsoft Office Excel 專案,則事件處理常式有下列名稱:
Sheet1_Shutdown
Sheet2_Shutdown
Sheet3_Shutdown
ThisWorkbook_Shutdown
注意
在文件的 Shutdown 事件處理常式執行期間,請勿以程式設計方式移除控制項。 當 Shutdown 事件發生時,文件的 UI 項目便無法再使用。 如果您想要在應用程式關閉之前移除控制項,請將程式碼加入其他事件處理常式,例如 BeforeClose 或 BeforeSave。
事件處理常式方法宣告
每個事件處理常式方法宣告都具有傳遞給它的相同引數: sender 和 e。 在 Excel 中, sender 引數會參考工作表,例如 Sheet1
或 Sheet2
;在 Word 中, sender 引數會參考文件。 e 引數會參考事件的標準引數 (在此情況下不會使用)。
下列程式碼範例會顯示 Word 文件層級專案中的預設事件處理常式。
private void ThisDocument_Startup(object sender, System.EventArgs e)
{
}
private void ThisDocument_Shutdown(object sender, System.EventArgs e)
{
}
下列程式碼範例會顯示 Excel 文件層級專案中的預設事件處理常式。
注意
下列程式碼範例顯示 Sheet1
類別中的事件處理常式。 其他主項目類別中的事件處理常式名稱會對應至這個類別名稱。 例如,在 Sheet2
類別中, Startup 事件處理常式的名稱為 Sheet2_Startup
。 在 ThisWorkbook
類別中, Startup 事件處理常式的名稱為 ThisWorkbook_Startup
。
private void Sheet1_Startup(object sender, System.EventArgs e)
{
}
private void Sheet1_Shutdown(object sender, System.EventArgs e)
{
}
文件層級 Excel 專案中事件的順序
呼叫 Excel 專案中 Startup 事件處理常式的順序如下:
ThisWorkbook_Startup
.Sheet1_Startup
.Sheet2_Startup
.Sheet3_Startup
.順序中的其他工作表。
呼叫活頁簿方案中 Shutdown 事件處理常式的順序如下:
ThisWorkbook_Shutdown
.Sheet1_Shutdown
.Sheet2_Shutdown
.Sheet3_Shutdown
.順序中的其他工作表。
此順序是在編譯專案時決定。 如果使用者在執行階段重新排列工作表,則下次開啟或關閉活頁簿時,引發事件的順序並不會因而變更。
VSTO 增益集專案
Visual Studio 會在 VSTO 增益集中提供產生的程式碼。此程式碼會引發兩個不同的事件:Startup 和 Shutdown。
Startup 事件
VSTO 增益集載入並執行組件中的所有初始化程式碼之後,會引發 Startup 事件。 這個事件是由所產生程式碼檔中的 ThisAddIn_Startup
方法處理。
ThisAddIn_Startup
事件處理常式中的程式碼是第一個執行的使用者程式碼,除非您的增益集會覆寫 RequestComAddInAutomationService 方法。 在這個情況下, ThisAddIn_Startup
事件處理常式會在 RequestComAddInAutomationService之後呼叫。
如果程式碼需要開啟文件,請勿將程式碼加入 ThisAdd-In_Startup
事件處理常式。 相反地,請將程式碼加入 Office 應用程式在使用者建立或開啟文件時所引發的事件。 如需詳細資訊,請參閱啟動 Office 應用程式時存取文件。
有關 VSTO 增益集的啟動順序的詳細資訊,請參閱 VSTO 增益集的架構。
Shutdown 事件
當已載入您程式碼的應用程式定義域即將卸載時,會引發 Shutdown 事件。 這個事件是由所產生程式碼檔中的 ThisAddIn_Shutdown
方法處理。 卸載 VSTO 增益集時,這個事件處理常式會是最後一個執行的使用者程式碼。
Outlook VSTO 增益集中的關機事件
只有當使用者藉由使用 Outlook 的 [COM 增益集] 對話方塊停用 VSTO 增益集時,才會引發 Shutdown 事件。 Outlook 結束時不會引發此事件。 如果您有必須在 Outlook 結束時執行的程式碼,請處理下列任一事件:
Quit 物件的 Application 事件。
注意
您可以修改登錄,強制 Outlook 在結束時引發 Shutdown 事件。 不過,如果系統管理員還原此設定,則 Outlook 結束時,便不會再執行任何您加入至 ThisAddIn_Shutdown
方法的程式碼。 如需詳細資訊,請參閱關閉 Outlook 2010 的變更。