如何: 處理 Office 2003 Web 元件,在 Visual Studio.NET 中的事件

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:823982
本文已封存。本文係以「現狀」提供且不會再更新。
結論
本文將逐步告訴您,如何修改 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。

若要修改,並重建類別包裝函式的步驟

  1. 啟動 Visual Studio.NET 命令提示字元。
  2. 在命令提示字元下執行下列動作:
    1. 建立名為 owc11,新的目錄,然後變更至該目錄:
      md c:\owc11

      cd c:\owc11
    2. 在 C# 中產生原始碼 Microsoft Windows Form 包裝函式:
      aximp"c:\program files\common files\microsoft shared\web components\11\owc11.dll"/source
    3. 刪除產生的組件 AxOWC11.dll
      del c:\owc11\axowc11.dll
  3. (例如 「 記事本 」) 的以文字] 編輯器開啟 C:\OWC11\AxOWC11.cs
  4. 加入至產生的類別 圖表 元件、 試算表] 元件和 樞紐分析表 元件的下列範例中的 [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 { 	 ...  } 
  5. 下列範例中標示 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 { 	 ...  } 
  6. 將變更儲存到 AxOWC11.cs。
  7. 在 Visual Studio.NET 命令提示字元執行下列動作:
    1. C:\Program Files\Microsoft.NET\Primary Interop 組件 加入至您 LIB 環境變數:
      組 lib = c:\program files\microsoft.net\primary Interop 組件 ; %路徑 %
    2. 複製 Microsoft.Office.Interop.OWC11.dllMSComCtl.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
    3. 編譯原始程式檔 AxOWC11.cs
      csc /t:library /r:microsoft.office.interop.owc11.dll /r:adodb.dll /r:msdatasrc.dll /r:mscomctl.dll axowc11.cs
      附註您會收到下列的 CS0108 錯誤訊息:
      是必要的新關鍵字
      您可能會忽略這個錯誤。
  8. 啟動 Visual Studio.NET。
  9. 將您剛編譯 AxOWC11.dll 加入至 工具箱 中:
    1. 在 [工具] 功能表,按一下 [自訂工具箱] (在 Visual Studio.NET 2002),或按一下 [新增/移除工具箱項目 (在 Visual Studio.NET 2003),然後按一下 [.NET Framework 元件] 索引標籤。
    2. .NET Framework 元件] 索引標籤上,按一下 [瀏覽]
    3. 在 [檔案名稱] 文字方塊中,輸入 c:\owc11\axowc11.dll。按一下 [開啟舊檔
    4. 按一下 [確定] 以關閉 [自訂工具箱] 對話方塊。
當建立新的 Microsoft Visual Basic.NET 專案或新的 Microsoft Visual C#.NET 專案注意到在 工具箱] 中的 [一般] 索引標籤上的控制項清單包含 AxChartSpace 控制]、 [AxPivotTable] 控制項] 和 [AxSpreadsheet 控制項。您現在可以將這些元件加入至您的表單。

参考
如其他有關管理的 Office XP Web 元件的事件,藉由使用 Visual Studio.NET 的資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中 「 文件:
328275如何: 處理 Office Web 元件,在 Visual Studio.NET 中的事件
webchart 樞紐分析表深壓淺工作表 Excel owc

警告:本文為自動翻譯

內容

文章識別碼:823982 - 最後檢閱時間:12/08/2015 03:35:53 - 修訂: 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

  • kbnosurvey kbarchive kbmt kbpia kbofficewebspread kbofficewebpivot kbofficewebchart kbhowto KB823982 KbMtzh
意見反應