填充我的部落格側邊欄——Word 2007進階應用程式

來源:互聯網
上載者:User

填充我的部落格側邊欄——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查看部落格、最近文章和存檔草稿

相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。