填充我的博客侧边栏--Word 2007高级应用
发布时间:2022-05-03 04:31:52
填充我的博客侧边栏——Word 2007高级应用
假设"我的博客"侧边栏的相关文件安置在My Blogs文件夹里,该文件夹的结构如下图所示:
图 1
虽然我们可以通过枚举My Blogs的子文件夹来填充cbxBlogs控件,然而我希望设计一个类来表示博客并且实现一定的数据绑定。回顾上一篇文章“创建我的博客侧边栏——Word 2007高级应用(二)”,"我的博客"侧边栏应该具备如下特性:
它会在启动时读取My Blogs文件夹里的相关信息,并且填充 cbxBlogs控件;
当我们在博客列表中选择某个博客时,它会通过RSS获取该博客最近发布的帖子,并且填充lbxRecentPosts控件;
当我们在博客列表中选择某个博客时,它会读取该博客帖子草稿文件夹里的数据,并且填充lbxDrafts控件;
当我们在博客列表中选择某个博客时,按下View Blog按钮将会在Internet Explorer中打开该博客的主页;
当我们在最近帖子列表中选择某个帖子时,按下View Post按钮将会在Internet Explorer中打开该帖子的网页;
当我们在草稿列表中选择某个草稿时,按下Open Draft按钮将会在新的Word 2007中打开该草稿。
明确这些需求后,我们就可以着手写代码了:
对于Code #01,以下几点是需要说明的:
Post、Draft和Blog类都重写了ToString()方法,这是因为ComboBox和ListBox等控件会调用该方法并把返回的字符串用 作条目的显示,重写该方法是为了让条目得到正确的显示。当然,如果你结合DataSource和DisplayMember来使用,也可以不重写 ToString()方法。
Blog.GetRecentPosts()方法里使用Argotic Syndication Framework来进行RSS信息处理,所以你需要下载并安装它,然后在项目中引用相关的类库和Argotic.Core.Rss命名空间。
Blog.GetRecentPosts()方法里对RSS地址进行了假设,这个假设适用于博客园以及旗下其它网站,当然,你可以想出很多方法让它具备普遍适用性。
Blog.GetRecentPosts()方法里使用NetworkInterface. GetIsNetworkAvailable()方法判断当前网络是否连通,如果连通则获取数据,否则返回空数组。
Blog.GetDrafts()方法没有进行任何筛选,这里假设文件夹里面只包含.docx和/或.doc文件。由于这些文件将会用Word 2007打开,如果你可能往文件夹里放置Word 2007不能读取的文件,那么你最好为LINQ查询语句加入where来进行必要的过滤。
在Blog.GetDrafts()方法里,我还假设My Blogs文件夹是放在"我的文档"里的,并且博客所在的文件夹名字和博客的名字一样,当然,这样我们就不能在博客的名字里面包含非法的路径字符了。
我们可以让文件夹的名字和博客的名字相同,但却无法在这里包含博客的URL信息,而这又是很多操作的前提,于是我在My Blogs文件夹里放置一个Blogs.xml文件,里面包含了如下内容:
有了这个文件,我们就可以顺利存取博客的URL信息了。另外,如果你希望让博客的名字不受路径的约束,即可以包含非法的路径字符,那么你可以为blog元素扩展一个directory属性用于存放路径,这样name属性就可以专门用于界面上的显示了。
增值服务区
你可以通过 Path. GetInvalidFileNameChars()或Path. GetInvalidPathChars()方法查看非法的路径字符。
接下来就是把数据填充到"我的博客"侧边栏了,回到MyBlogsUserControl.cs,在构造函数里添加如下所示的代码:
对于Code #02,以下几点是需要说明的:
我们使用LINQ to XML获取Blogs.xml中博客的相关数据,并把这些数据绑定到博客列表上。
我们获取blogs元素的defaultBlog属性的值,并用它来设置cbxBlogs.SelectedText属性,使得它所指定的默认博客成为当前所选定的博客。
如果我们约定第一个blog元素就是默认博客,那么这里就不需要使用defaultBlog属性和设置SelectedText属性了,因为当我们把一 个数据源绑定到DataSource属性时,它会在完成绑定后把第一个条目设为当前选定项,当然,此时会引发 SelectedValueChanged(和其它相关的)事件。
噢,别忘记cbxBlogs的SelectedValueChanged事件,下面是该事件的Event Handler:
值得提醒的是,Blog.GetRecentPosts()方法所返回的数组的元素个数和对应博客的设置相关:
图 2
现在来看看运行效果:
图 3
下一章将为大家介绍任何利用Word 2007查看博客、最近帖子和存档草稿
猜你喜欢
- 很多用户在办公的时候需要使用到Office软件,问题是有些用户反应,自己的Office软件kms已经激活,但是一直有许可证不是正版的弹框烦扰
- iOS 16并无大惊,甚至可以说“有多大希望就有多大失望”!更何况尝鲜的 iOS 16 是测试版,所以不出意外的存在各种 bug 以及发热续
- 相信有很多用户在使用Win10系统的电脑时候都经常会用到个性化和显示设置这两个功能,但最近有部分用户在使用的过程中发现自己无法正常的打开这两
- 苹果今天凌晨 2 点发布 iOS 14.3 正式版,版本号是 18C5044f,但三个小时后撤回,然后把系统版本更改为 iOS 14.3 b
- 页码从第二页开始,怎么使用office 文档操作第一步:首先正常插入页码(从第一页开始插入)结果如下:第二步:右击“页码数字”进入页码格式界
- 在word中选中图片右键选择大小和位置弹出对话框如下图,在锁定纵横比前打钩。即可实现按照比例大小缩放的功能。
- 昨天,苹果给大家带来了iOS 与 iPadOS 14.5 首个开发者测试版。升级iOS 14.5 Beta以后,海外 iPhone 12 机
- Win10桌面右下角出现“NVIDIA control panel is not found”错误提示怎么办呢?这个问题是比较容易决解决的,
- 一本长篇小说终于编辑完成了,剩下的工作就是检查了。但在检查过程中笔者发现,用Word2003编辑完成的作品,存在许多空白页。连自己都不知道是
- 众所周知,现在的微软word办公软件,已经成为我们工作生活一款必不可少的工具软件。无论是进行文档处理,还是文字排版,我们都会选择使用该款软件
- Office2010是一套非常受广大工作者所喜爱的办公软件,其中包括了Word,Excel,PowerPoint等常用的办公软件。在Powe
- win10系统是一个非常优秀的智能系统,新的智能技术可以帮助用户更好地体验系统的优秀!多样化的设置功能可以根据用户的习惯调整他们使用最舒适的
- Win10迅雷下载速度慢如何提速?我们在使用迅雷下载如果碰到一个大型软件,发现下载速度只有几KB几十KB,每次都要等待很长时间。那么,有什么
- 在Win10系统中使用qq总会出现一些问题。比如QQ无法打开提示“initialization failure :0x00000005”的问
- 使用wps表格创建组的方法打开电脑,打开WPS表格,打开我们的目标表格,如下图所示 我们看到我们要操作的工作薄,我
- 在我们应用win10系统遇到了难以修复法毛病时,是可以像手机一样规复出厂配置的,这给很多不是很醒目计算机修复的用户供应了一种很适用的故障办理
- 如果我们使用的计算机是win10操作系统,相信很多游戏玩家在玩英雄联盟的时候都会头疼win10系统的蓝屏。因此,小编认为这种情况应该是由于我
- word2007采用了新的图形引擎,这使得在在03版word中的组合图形的功能消失了,这使得图形的编辑有些不方便。那么在word2007中,
- Word模板可存储样式 、自动图文集 词条、“自动更正”词条、宏 、工具栏 、自定义菜单设置和快捷键 。可加载模板并使之成为共用模板 。加载
- 根据外媒消息,苹果在近期发布的系统更新中带来了一项保护听力的新功能。这项功能不仅仅是设置音量上限,而是根据世界卫生组织 WHO 的建议,在