2012-10-10 87 views
1

我創建了一個vsto excel加載項,我試圖找到一種方法來更改當前的功能或添加按下關閉窗口按鈕時調用某個功能的功能當前的電子表格。有誰知道這是可能的還是有什麼建議?到目前爲止,我還沒能找到很多東西。VSTO重新關閉窗口按鈕

回答

0

Workbook類有一個名爲BeforeClose的事件,您可以使用它來檢測工作簿何時關閉。您也可以通過將Cancel參數設置爲true來使用此事件來阻止它被關閉。

要在當前工作簿上檢測到此事件,必須在當前工作簿上附加BeforeClose事件的事件處理程序。

最簡單的方法是在引發Application.WorkbookActivate時將事件處理程序附加到BeforeClose事件。並將其從以前的活動工作簿中分離出來。

例如

private Workbook _activeWorkbook = null; 

private void ThisAddIn_Startup(object sender, System.EventArgs e) 
{ 
    Application.WorkbookActivate += Application_WorkbookActivate; 

    // Attach to the BeforeClose event on the Workbook that 
    // was created when Excel started 
    _activeWorkbook = Application.ActiveWorkbook; 
    if (_activeWorkbook != null) 
    { 
     _activeWorkbook.BeforeClose += ActiveWorkbook_BeforeClose; 
    } 
} 

private void Application_WorkbookActivate(Microsoft.Office.Interop.Excel.Workbook Wb) 
{ 
    if (_activeWorkbook != null) 
    { 
     _activeWorkbook.BeforeClose -= ActiveWorkbook_BeforeClose; 
     Marshal.ReleaseComObject(_activeWorkbook); 
    } 

    _activeWorkbook = Wb; 
    _activeWorkbook.BeforeClose += ActiveWorkbook_BeforeClose; 
} 

private void ActiveWorkbook_BeforeClose(ref bool Cancel) 
{ 
    Cancel = MessageBox.Show("Do you want to close the workbook?", "Close Workbook", MessageBoxButtons.YesNo) != DialogResult.Yes; 
} 

所以,如果你想改變目前的功能或添加調用函數時按下當前電子表格中的關閉窗口按鈕,在ActiveWorkbook_BeforeClose方法添加代碼的能力。