發表文章

目前顯示的是 6月, 2010的文章

Resource.designer.vb could not be found

今天開啟VS2008要新增Windows Service專案類型時,突然彈出一個找不到檔案的錯誤訊息,從錯誤訊息看起來,大致是說找不到resource.designer.vb相關的檔案,以至無法建立專案;就這樣,Service類型的專案離我而去.. 找了一段時間,測試過重新設定Visual Studio的環境設定,但是無效,瞎搞之下找到了這篇 Missing an item template in Visual Studio 2005? Try this... 開啟Visual Studio command prompt之後,執行 devenv /installvstemplates 讓專案樣版重新安裝一次,之後開啟Visual Studio,總算是回復了;如果有同樣症頭的朋友,可以試試是否可以解決你的問題了。

筆記-NavigationWindow

圖片
甚麼是巡覽式的應用程式呢?巡覽式的應用程式跟網頁的操作,或是跟安裝軟體的畫面過程有點像,先來看看執行起來是甚麼樣子 在上面的地方,可以看到一個像是瀏覽器『上一頁』、『下一頁』的按鈕,而主要的操作方式便是在同一個畫面中,去瀏覽各個不同的『頁面』;接下來就來看看要怎麼做出這樣子的應用程式。 首先建立一個WPF應用程式之後,在預設的狀態下,會建立一個MainWindow.xaml,裡面會有一個Window,xaml的部分會長的像是這樣 < Window x : Class = " WpfApplication1.MainWindow "         xmlns = " http://schemas.microsoft.com/winfx/2006/xaml/presentation "         xmlns: x = " http://schemas.microsoft.com/winfx/2006/xaml "         Title = " MainWindow " Height = " 350 " Width = " 525 " >     < Grid >             </ Grid > </ Window > 那麼首先要先將這個改成NavifationWindow,做為主要的顯示容器,修改之後像是下圖 而在後置程式碼的地方也要修改一下 namespace NavigateTest { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : NavigationWindow { public MainWindow ( ) { InitializeComponent ( ) ; } } } 主要是原先是繼承自Window,現在改為繼

簡單的PDF檔案瀏覽程式

圖片
最近在熟悉WPF相關的環境以及操作方式,而日常作業中又常常會遇到需要使用PDF檔案的情況,PDF檔案一多時(尤其是都從email進來)說實在還真不是很好整理;所以想說是不是能夠做個小程式來瀏覽這些PDF檔案呢?於是就搞了這麼一個初版的小程式。 首先是參考的資料來源, Displaying a PDF file within a WPF application ,裡面的說明相當的詳細,可以直接前往參考,下面所做的程式也是參考這篇而做的。這個做法是利用Adobe的ActiveX元件來做瀏覽的功能,所以在使用之前,目標電腦上 至少必須要安裝Adobe Reader才能夠順利執行 喔,這要特別注意一下。 接下來根據上面連結所提到的,在建立UserControler的時候在工具箱當中,要加入Adobe的原件,以方便我們將控制項拖拉到畫面上,這個部分可以在COM頁籤當中找到,像是下圖 簡單的做好UserControler之後,就要在主要的畫面(XAML檔案)加入這個UserControl了,而由於這是一個COM元件,所以必須要將他放在一個WindowsFormHost控制項當中,這可以在工具箱中找到 接下來在就是主畫面的部分,在功能的部分,我是想做到指定一個基本的資料夾,之後將該資料夾中所有的目錄列在第一層(利用Expender+StackPanel),目錄下面就列出所有PDF檔案,於是做了下面簡單的畫面 在Blend裡面UI的畫面看起來大概像下面這樣 好,接下來就來看看主要畫面的程式碼了 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windo

Application.Doevents in WPF

在以往Windows Form的應用程式中,在長時間的迴圈中需要更新UI的時候,通常會下一個Application.Doevents的指令,用意是讓程式去處理訊息迴圈中相關的訊息,而在WPF中卻已經看不到這個東東了,跑哪裡去了呢?我們可以參考下面這篇 Application.DoEvents in .NET 3.0 ? 其中有一篇MSDN的相關連結,我把相關的程式碼節錄在下面 Public Sub DoEvents() Dim frame As New DispatcherFrame() Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, New DispatcherOperationCallback(AddressOf ExitFrame), frame) Dispatcher.PushFrame(frame) End Sub Public Function ExitFrame(ByVal f As Object) As Object CType(f, DispatcherFrame).Continue = False Return Nothing End Function 或是有另一種方式,利用匯入System.Windows.Forms的命名空間來使用也是可以的。 最後;在這邊也是要提一下,水能載舟,亦能覆舟,在Doevents的使用上要小心,可以利用但是不要濫用,Doevents將控制權放出去之後,甚麼時候會再回到原先被插斷的程式碼位置,這是無法控制的;而如果程式中有過多的Doevents,程式的執行過程會相當難以預測,造成不可預期的結果的。