您的位置:首页 > 其它

VisualStudio.NET 或 Visual Studio 2005 客户端应用程序无法捕获 Office Spreadsheet 11.0 ActiveX 控件通过引发事件

2007-02-02 09:34 801 查看

http://support.microsoft.com/kb/834614/zh-cn

概要

loadTOCNode(1, 'summary');

MicrosoftVisualStudio.NET 或 Visual Studio 2005 客户端应用程序无法捕捉是通过现有 ActiveX 控件 (Microsoft Office Spreadsheet 11.0) 引发事件。


回到顶端


症状

loadTOCNode(1, 'symptoms');
当 Office Spreadsheet 11.0 MicrosoftActiveX 控件引发事件, 托管代码无法捕获这些事件。


回到顶端


原因

loadTOCNode(1, 'cause');
OWC 11 .dll 文件的 IChartInterface 接口及其方法上有调度标识符 (DISPID)。 从 IChartInterface 接口, 事件侦听器类派生时重写方法不支持的 IChartInterface 接口 DISPID。 当 Microsoft Office Spreadsheet 11.0 尝试引发事件, 事件侦听器类无法找到 DISPID。


回到顶端


解决方案

loadTOCNode(1, 'resolution');
要解决此问题, 请按照下列步骤:
1.OWC 11 .dll 文件上运行 AxImp.exe 工具。
a. 找到 OWC 11 .dll 文件。 OWC 11 .dll 文件是为 Microsoft Office Spreadsheet 11.0 ActiveX 控件 DLL。 OWC 11 .dll 文件通常位于以下文件夹: C:\Program Files\Common Files\Microsoft Shared\Web Components\11。
b. 单击 A0 > 开始 , 单击 运行 , 并在 打开 框中键入 cmd 。
c. 在命令提示符下, 找到 OWC 11 .dll 文件。
d. 在命令提示符下键入 aximp /source OWC 11 .dll 。 您发现 AxOWC11.dll 文件和 AxOWC11.cs 文件生成并且放在执行此命令相同文件夹中。

AxImp.exe 文件转换整个 ActiveX 控件类型库并生成程序集包含元公共语言运行库数据和控制对原始类型库中定义类型实现一组。
2.修改 AxOWC11.cs 文件。 要这样做, 下列步骤来修改生成源代码文件中所有 控件 类和相应 EventMulticaster 类中添加代码。
a. 将 ToolboxItem 属性设置 true 生成类文件中。 要执行此添加以下代码之前 控件 类:
[code][System.ComponentModel.ToolBoxItem(True)]

[/code]控制 类如下:
AxChartSpace
AxSpreadsheet
AxDataSourceControl
AxRecordNavigationControl
AxPivotTable
b. 添加下列代码上面 EventMulticaster 类:
[code][System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]

[/code]EventMulticaster 类如下:
AxChartSpaceEventMulticaster
AxSpreadsheetEventMulticaster
AxDataSourceControlEventMulticaster
AxRecordNavigationControlEventMulticaster
AxPivotTableEventMulticaster
3.编译修改 AxOWC11.cs 文件。
1.找到, 并复制文件夹 AxOWC11.cs 文件中引用程序集。 程序集引用如下:
Microsoft.Office.Interop.Owc11.dll
Adodb.dll
Mscomctl.dll
Msdatasrc.dll
2.在命令提示符下, 将目录更改为 C:\Temp。
3.要编译 AxOWC11.cs 文件, 在命令提示符下键入以下命令:
[code]csc /t:library  /lib:c:\Temp /r:Microsoft.Office.Interop.Owc11.dll;ADODB.dll;MSCOMCTL.DLL;msdatasrc.dll AxOWC11.cs

[/code]注意 Temp 是文件夹, 您创建硬盘磁盘驱动器中。 此文件夹包含程序集引用和 AxOWC11.cs 文件。
4.测试修改 AxOWC11.cs 文件。
a. 启动 MicrosoftVisualStudio.NET 或 Microsoft Visual Studio 2005。
b. 在 文件 菜单, 指向 新建 , 然后单击 项目 。
c. ProjectTypes@@ , 下单击 VisualBasic 项目 , 并单击 模板 下 WindowsApplication@@@ 。

注意 对于 Visual Studio 2005, 单击 项目类型 VisualBasic
d. 在 视图 菜单上, 单击 工具箱 。
e. 右键单击工具箱, 然后单击 添加/删除项目 。 出现 CustomizeToolbox@@ @ 对话框。

注意 在 Visual Studio 2005, 右击工具箱, 并单击 选择项目
f. 在 COM 组件 选项卡, 单击以选中 Microsoft Office Spreadsheet 11.0 , 然后单击 确定 。 Microsoft Office Spreadsheet 11.0 ActiveX 控件添加到工具箱。
g. 将 Microsoft Office Spreadsheet 11.0 ActiveX 控件添加到窗体 Form 1。
h. 在 SolutionExplorer@@, 展开 引用 项目, 下依次 AxOWC11 。
i. 在 视图 菜单上, 单击 删除 。
j. SolutionExplorer@@ , 下单击 引用 , 然后单击 添加引用 。 出现 AddReference@@ @ 对话框。
k. 单击 浏览 , 找到并选择 AxOWC11.dll 文件, 并单击 确定 。
l. 在 视图 菜单上, 单击 代码 。
m. 从框代码视图窗口中选择 AxSpreadsheet1 。
n. 从第二个框在代码视图窗口选择 EndEdit 事件。 下列过程添加到代码视图:
[code]Private Sub AxSpreadsheet1_EndEdit(ByVal sender As Object, ByVal e As AxMicrosoft.Office.Interop.Owc11.ISpreadsheetEventSink_EndEditEvent) Handles AxSpreadsheet1.EndEdit
End Sub

[/code]
o. 以下代码添加到此过程:
[code]MessageBox.Show("Test EndEdit")

[/code]
5.生成并运行应用程序。
1.在 生成 菜单上, 单击 BuildSolution@@@ 。
2.在 调试 菜单上, 单击 开始 。
3.编辑出现, MicrosoftExcel 电子表格中单元格, 然后单击下 Excel 电子表格中单元格。 出现一个对话框中包含以下文本:
测试 EndEdit


回到顶端


状态

loadTOCNode(1, 'status');
此行为是设计使然。


回到顶端


更多信息

loadTOCNode(1, 'moreinformation');

重现行为步骤

loadTOCNode(2, 'moreinformation');
1.创建 Windows 应用程序。
a. 启动 MicrosoftVisualStudio.NET 或 Microsoft Visual Studio 2005。
b. 在 文件 菜单, 指向 新建 , 然后单击 项目 。
c. ProjectTypes@@ , 下单击 VisualBasic 项目 , 并单击 模板 下 WindowsApplication@@@ 。

注意 对于 Visual Studio 2005, 单击 项目类型 VisualBasic
2.将 MicrosoftOffice 电子表格 ActiveX 控件添加到窗体 Form 1。
a. 在 视图 菜单上, 单击 工具箱 。
b. 右键单击工具箱, 然后单击 添加/删除项目 。 出现 CustomizeToolbox@@ @ 对话框。

注意 在 Visual Studio 2005, 右击工具箱, 并单击 选择项目
c. 在 COM 组件 选项卡, 单击以选中 Microsoft Office Spreadsheet 11.0 , 然后单击 确定 。 Microsoft Office Spreadsheet 11.0 ActiveX 控件添加到工具箱。
d. 将 Microsoft Office Spreadsheet 11.0 ActiveX 控件添加到窗体 Form 1。
3.将代码添加到 EndEdit 事件。
a. 在 视图 菜单上, 单击 代码 。
b. 从框代码视图窗口中选择 AxSpreadsheet1 。
c. 从第二个框在代码视图窗口选择 EndEdit 事件。 下列过程添加到代码视图:
[code]Private Sub AxSpreadsheet1_EndEdit(ByVal sender As Object, ByVal e As AxMicrosoft.Office.Interop.Owc11.ISpreadsheetEventSink_EndEditEvent) Handles AxSpreadsheet1.EndEdit
End Sub

[/code]
d. 以下代码添加到此过程:
[code]MessageBox.Show("Test EndEdit")

[/code]
4.生成应用程序, 然后和运行应用程序。
a. 在 生成 菜单上, 单击 BuildSolution@@@ 。
b. 在 调试 菜单上, 单击 开始 。
c. 编辑出现 Excel 电子表格中单元格。 单击下一单元格的 Excel 电子表格。 指示不激发事件, 对话框中未出现


回到顶端


参考

loadTOCNode(1, 'references');
请, 有关访问下列 Microsoft Developer Network (MSDN) Web 站点:
导 Windows 窗体 ActiveX 控件入程序 (Aximp.exe)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpgrfWindowsFormsActiveXControlImporterAximpexe.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpgrfWindowsFormsActiveXControlImporterAximpexe.asp)
Web 组件和控件
http://msdn2.microsoft.com/en-us/library/aa165059(office.10).aspx (http://msdn2.microsoft.com/en-us/library/aa165059(office.10).aspx)
使用 ActiveX 控件
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcn7/html/vatskworkingwithactivexcontrols.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcn7/html/vatskworkingwithactivexcontrols.asp)
标准 DISPIDS
http://msdn2.microsoft.com/en-us/library/ms694489.aspx (http://msdn2.microsoft.com/en-us/library/ms694489.aspx)


回到顶端


这篇文章中的信息适用于:
Microsoft Visual Basic 2005
Microsoft Visual Basic .NET 2003 Standard Edition
Microsoft Visual Basic .NET 2002 Standard Edition
Microsoft Visual C# 2005 Express Edition
Microsoft Visual C# .NET 2003 Standard Edition
Microsoft Visual C# .NET 2002 Standard Edition


回到顶端


关键字:
kbvs2005swept kbvs2005applies kbofficewebspread kbdll kbactivexevents kbevent kbprb KB834614 KbMtzh kbmt


回到顶端


Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐