忙乎了多日,终于将WebBrowser中Word工具栏中搞定
来源:互联网 发布:达内java视频下载 编辑:程序博客网 时间:2024/04/29 23:01
忙乎了多日,终于将WebBrowser中Word工具栏中搞定
在题库管理系统中,需要将试题显示出来,并进行编辑。于是,每道题都存储为一个Word文件,并保存在SQL Server中,在浏览试题库时,用WebBrowser控件显示试题是最好的方法,有直观的Word操作界面,也为试题保存提供了方便。
一开始是使用VS 2005中内建的Web Browser控件来显示。显示正常,但很快带来两个问题:
1、默认打开时是有“审阅”工具栏,如何在刚打开时就具有“常用”工具栏。
2、没有办法找到对应的文档对象,以控制Word文件的保存。
在网上搜了一大堆,都是提到要使用COM对象axWebBrowser控件,包括MSDN上的这篇文章:“如何使用 WebBrowser 控件在 Visual C# 2005 或 Visual C# .NET 中打开 Office 文档”(http://support.microsoft.com/kb/304662/zh-cn)
第一步:添加axWebBrowser控件到工具箱。
在工具箱上,单击右键,使用选择项,在COM组件中找到“Microsfot Web Browser”项,确定即可。
第二步,向窗体上添加“Microsfot Web Browser”控件,这个地方命名为wbDocView
第三步,需要使用WebBrowser控件加载Word文档时,使用以下语句:
wbDocView.Nagivate(yourfilename);
遇到的第一个问题:打开第一个文件时可以,再次打开同一文件时,由于文件仍属性于打开状态,无法再次打开。窗体关闭时并不会主动关闭该文件,它要等到整个程序退出时才释放资源。
解决办法:在窗体的FormClosing事件中,使用下列语句关闭文件:
wbDocView.Navigate("about:blank");
解决第二个问题,打开Word文件时,显示常用工具栏。MSDN 304662中介绍的是:
Object refmissing = System.Reflection.Missing.Value;
oDocument = null;
axWebBrowser1.Navigate(strFileName, ref refmissing , ref refmissing , ref refmissing , ref refmissing);
我按照同样的方法做时,总是出现“试图吊销一个未注册的拖放目标 (异常来自 HRESULT:0x80040100 (DRAGDROP_E_NOTREGISTERED))”的错误。很长时间不能解决。
后来,在WebBrowser控件的NavigateComplete2事件中写入以下代码:
axWebBrowser1.Navigate(strFileName, ref refmissing , ref refmissing , ref refmissing , ref refmissing);
果然,“审阅”工具栏不再出现了,取而代之的是有“常用”、“字体”和“绘图”三个工具栏。暂时不管它了,以后再深入研究。
解决第三个问题:适当的时候如何保存Word文件?
同样,在NavigateComplete2事件中,写入以下代码以获取Document对象。
object o = e.pDisp;
oDocument = o.GetType().InvokeMember("Document", System.Reflection.BindingFlags.GetProperty, null, o, null);
这里的oDocument是定义在窗体类中的一个私有字段:object oDocument = null;
接下来,在“保存”按钮的Click事件中,用以下代码:(此时需要引入Office类库)
object missing = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Word.DocumentClass doc = oDocument as Microsoft.Office.Interop.Word.DocumentClass;
doc.Save();
此时,窗体上的WebBrowser控件会处于假死状态,这时重新加载这个文件就可以了:
wbDocView.Navigate(wbDocView.LocationURL);
虽然加载过程会有明显的停顿与闪烁,但暂时不管它了。
2008年12月23日
- 忙乎了多日,终于将WebBrowser中Word工具栏中搞定
- 忙乎了一下午,终于将我的Blog搞定了;
- 终于将一头骡子搞定了
- 去除word中requirements工具栏
- 去除word中requirements工具栏
- 在word中添加工具栏
- 终于搞定了mysql!
- 终于搞定了vmware
- 终于搞定了X~
- 终于搞定了conky
- 终于搞定Paypal了
- 终于搞定硕士论文了
- 终于搞定了SHADOWMAP,
- 终于搞定Direct3D中视频播放
- 终于搞定了MySQL数据库的备份和导入 兴奋中~~
- 从Word工具栏中启动应用程序
- 解决工具栏中消失了的dev控件工具栏
- 今天终于搞定了USB
- Microsoft SOAP Toolkit 2.0介绍
- 编译器错误信息: CS0016: 未能写入输出文件“c:/WINDOWS/Microsoft.NET/Framework/
- 应用框架设计若干问题探讨之----计划任务
- Creating a Custom SharePoint 2007 List Definition
- String Literals
- 忙乎了多日,终于将WebBrowser中Word工具栏中搞定
- JAVA学习提高之----常用的WebServices收藏备用
- Creating a custom Site Definition in MOSS 2007
- 脸型与发型的搭配
- 设计模式--(1)工厂模式与抽象工厂模式
- asp.net(C#)使用split函数
- PHP的GD库函数大全
- 数据检索-子查询(subselect)
- My heart wil go on and on!