萬盛學電腦網

 萬盛學電腦網 >> WORD教程 >> WORD使用技巧 >> 填充我的博客側邊欄——Word 2007高級應用

填充我的博客側邊欄——Word 2007高級應用

填充我的博客側邊欄——Word 2007高級應用

 假設"我的博客"側邊欄的相關文件安置在My Blogs文件夾裡,該文件夾的結構如下圖所示:

  填充我的博客側邊欄——Word 2007高級應用(三)

  圖  1

  雖然我們可以通過枚舉My Blogs的子文件夾來填充cbxBlogs控件,然而我希望設計一個類來表示博客並且實現一定的數據綁定。回顧上一篇文章“創建我的博客側邊欄 ——Word 2007高級應用(二)”,"我的博客"側邊欄應該具備如下特性:

  填充我的博客側邊欄——Word 2007高級應用(三)

  填充我的博客側邊欄——Word 2007高級應用(三)

  填充我的博客側邊欄——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文件,裡面包含了如下內容:

填充我的博客側邊欄——Word 2007高級應用(三)

  有了這個文件,我們就可以順利存取博客的URL信息了。另外,如果你希望讓博客的名字不受路徑的約束,即可以包含非法的路徑字符,那麼你可以為blog元素擴展一個directory屬性用於存放路徑,這樣name屬性就可以專門用於界面上的顯示了。

  增值服務區

  你可以通過 Path. GetInvalidFileNameChars()或Path. GetInvalidPathChars()方法查看非法的路徑字符。

  接下來就是把數據填充到"我的博客"側邊欄了,回到MyBlogsUserControl.cs,在構造函數裡添加如下所示的代碼:

  填充我的博客側邊欄——Word 2007高級應用(三)

  對於Code #02,以下幾點是需要說明的:

  我們使用LINQ to XML獲取Blogs.xml中博客的相關數據,並把這些數據綁定到博客列表上。

  我們獲取blogs元素的defaultBlog屬性的值,並用它來設置cbxBlogs.SelectedText屬性,使得它所指定的默認博客成為當前所選定的博客。

   如果我們約定第一個blog元素就是默認博客,那麼這裡就不需要使用defaultBlog屬性和設置SelectedText屬性了,因為當我們把一 個數據源綁定到DataSource屬性時,它會在完成綁定後把第一個條目設為當前選定項,當然,此時會引發 SelectedValueChanged(和其它相關的)事件。

  噢,別忘記cbxBlogs的SelectedValueChanged事件,下面是該事件的Event Handler:

  填充我的博客側邊欄——Word 2007高級應用(三)

  值得提醒的是,Blog.GetRecentPosts()方法所返回的數組的元素個數和對應博客的設置相關:

  填充我的博客側邊欄——Word 2007高級應用(三)

  圖  2

  現在來看看運行效果:

  填充我的博客側邊欄——Word 2007高級應用(三)

  圖  3

  下一章將為大家介紹任何利用Word 2007查看博客、最近帖子和存檔草稿

copyright © 萬盛學電腦網 all rights reserved