本文將逐步告訴您,如何修改 Microsoft Office 2003 Web 元件的類別包裝函式。然後,它說明如何重新產生類別包裝函式,以便您可以管理其在您使用 Microsoft Visual Studio.NET 所建立的應用程式中的事件。
預設情況下,Microsoft Visual Studio.NET 會產生該類別包裝函式不允許您處理下列的 Office 2003 Web 元件的事件:
若要處理這些元件的事件,可以修改類別包裝函式的原始程式碼,然後再重新編譯程式碼。
背景
Microsoft Visual Studio.NET 就會產生的
事件接聽程式 類別會實作
事件 介面。這個
事件接聽程式 類別被傳遞 Office Web 元件 (OWC)。[OWC 再呼叫
QueryInterface 方法
IDispatch 介面的呼叫
事件 介面。不過,
IDispatch 介面,來產生的類別並不包含分派識別項 (DISPID) 事件。
如果要解決這個問題,您可以將產生的類別標示藉由使用
ClassInterfaceType.None 要強制返回
IDispatch 類別而不是介面的 COM Interop 值。
IDispatch 介面包含事件 DISPID。
若要修改,並重建類別包裝函式的步驟
- 啟動 Visual Studio.NET 命令提示字元。
- 在命令提示字元下執行下列動作:
- 建立名為 owc11,新的目錄,然後變更至該目錄:
md c:\owc11
cd c:\owc11
- 在 C# 中產生原始碼 Microsoft Windows Form 包裝函式:
aximp"c:\program files\common files\microsoft shared\web components\11\owc11.dll"/source
- 刪除產生的組件 AxOWC11.dll:
del c:\owc11\axowc11.dll
- (例如 「 記事本 」) 的以文字] 編輯器開啟 C:\OWC11\AxOWC11.cs。
- 加入至產生的類別 圖表 元件、 試算表] 元件和 樞紐分析表 元件的下列範例中的 [ToolboxItem(true)]:
圖表元件 [System.ComponentModel.ToolboxItem(true)]
public class AxChartSpace : System.Windows.Forms.AxHost {
...
} 試算表元件 [System.ComponentModel.ToolboxItem(true)]
public class AxSpreadsheet : System.Windows.Forms.AxHost {
...
} 樞紐分析表元件 [System.ComponentModel.ToolboxItem(true)]
public class AxPivotTable : System.Windows.Forms.AxHost {
...
} - 下列範例中標示 ClassInterfaceType.None,事件類別:
圖表元件 [System.Runtime.InteropServices.ClassInterface(
System.Runtime.InteropServices.ClassInterfaceType.None)]
public class AxChartSpaceEventMulticaster : OWC11.IChartEvents {
...
} 試算表元件 [System.Runtime.InteropServices.ClassInterface(
System.Runtime.InteropServices.ClassInterfaceType.None)]
public class AxSpreadsheetEventMulticaster : OWC11.ISpreadsheetEventSink {
...
} 樞紐分析表元件 [System.Runtime.InteropServices.ClassInterface(
System.Runtime.InteropServices.ClassInterfaceType.None)]
public class AxPivotTableEventMulticaster : OWC11.IPivotControlEvents {
...
} - 將變更儲存到 AxOWC11.cs。
- 在 Visual Studio.NET 命令提示字元執行下列動作:
- 將 C:\Program Files\Microsoft.NET\Primary Interop 組件 加入至您 LIB 環境變數:
組 lib = c:\program files\microsoft.net\primary Interop 組件 ; %路徑 %
- 複製 Microsoft.Office.Interop.OWC11.dll 和 MSComCtl.dll 從 GAC 安裝 [Microsoft Office 2003 主要 Interop 組件的位置:
複本 %windir%\assembly\GAC\Microsoft.Office.Interop.Owc11\11.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Owc11.dll
複製 %windir%\assembly\GAC\mscomctl\10.0.4504.0__31bf3856ad364e35\mscomctl.dll
- 編譯原始程式檔 AxOWC11.cs:
csc /t:library /r:microsoft.office.interop.owc11.dll /r:adodb.dll /r:msdatasrc.dll /r:mscomctl.dll axowc11.cs
附註您會收到下列的 CS0108 錯誤訊息:您可能會忽略這個錯誤。
- 啟動 Visual Studio.NET。
- 將您剛編譯 AxOWC11.dll 加入至 工具箱 中:
- 在 [工具] 功能表,按一下 [自訂工具箱] (在 Visual Studio.NET 2002),或按一下 [新增/移除工具箱項目 (在 Visual Studio.NET 2003),然後按一下 [.NET Framework 元件] 索引標籤。
- 在 .NET Framework 元件] 索引標籤上,按一下 [瀏覽]。
- 在 [檔案名稱] 文字方塊中,輸入 c:\owc11\axowc11.dll。按一下 [開啟舊檔。
- 按一下 [確定] 以關閉 [自訂工具箱] 對話方塊。
當建立新的 Microsoft Visual Basic.NET 專案或新的 Microsoft Visual C#.NET 專案注意到在
工具箱] 中的 [
一般] 索引標籤上的控制項清單包含
AxChartSpace 控制]、 [
AxPivotTable] 控制項] 和 [
AxSpreadsheet 控制項。您現在可以將這些元件加入至您的表單。
如其他有關管理的 Office XP Web 元件的事件,藉由使用 Visual Studio.NET 的資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中 「 文件:
328275
(http://support.microsoft.com/kb/328275/
)
如何: 處理 Office Web 元件,在 Visual Studio.NET 中的事件
文章編號: 823982 - 上次校閱: 2003年9月17日 - 版次: 1.5
這篇文章中的資訊適用於:
- Microsoft Office 2003 Web Components
- Microsoft Visual Basic .NET 2003 Standard Edition
- Microsoft Visual Basic .NET 2002 Standard Edition
- Microsoft Visual C# .NET 2003 標準版
- Microsoft Visual C# .NET 2002 Standard Edition
| kbmt kbpia kbofficewebspread kbofficewebpivot kbofficewebchart kbhowto KB823982 KbMtzh |
機器翻譯重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:
823982
(http://support.microsoft.com/kb/823982/en-us/
)
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。