一.概要
Windows XP開創了一種全新的Windows用戶界面(UI),這種用戶界面給用戶一種現代化的、超時髦的感受。Windows XP新創了閃亮的具有圓形邊角的控件以及極富未來派氣息的進度條等具有新風格的控件。
而現在的Visual Studio.Net也具備了此類控件。那麼開發者就想能否在自己開發的程序中使用這類超酷的控件呢。答案是肯定的,程序員所要做的僅僅是添加一些引用以及一個資源文件。本文就通過介紹一個實例向大家介紹如何在Visual Basic和Visual C#下將控件的Windows XP風格應用到自己的程序中。
注:本文介紹的控件風格特性只能在Windows XP下的運用程序中實現。
二.介紹
我們先來做一個有關控件風格的比較。
在Windows XP下的控件具有一種全新的外觀。圖示如下:
而在Visual Studio.Net中提供的控件雖然和Windows XP下的是同樣的,但是它們的外觀卻截然不同。圖示如下:
本文就向大家介紹如何使Visual Studio中的控件和Windows XP下的控件一樣,具有超酷的外觀、良好的用戶界面。
你可以認為一個窗體由兩個相互獨立的部分組成:一個客戶區以及一個非客戶區。所有在Windows XP操作系統上運行的程序都有一個非客戶區,它包括:窗體框架、標題欄以及的非客戶區的滾動條。操作系統會自動給非客戶區應用Windows XP風格,所以盡管什麼也沒做,你也可以看到自己的程序在Windows XP上運行時具有新風格的窗體框架、標題欄以及滾動條。而我們真正要做的就是使客戶區的控件也具有Windows XP的風格。
三.實現原理
非客戶區的外觀是由當前所應用的視覺風格決定的。一個運用程序或是操作系統的視覺風格是可以被更改的。就像上面提到的那樣,當一個運用程序運行在Windows XP上時,窗體的滾動條以及標題欄就立即改變了外觀風格。只要運用程序應用了版本為6.0的Comctl32.dll,那麼其中的某些控件就是自動的呈現新的外觀。
這類控件如下:
其他的控件則需要一定的條件。確切地說,從System.Windows.Forms.ButtonBase類繼承過來的控件(Button,RadioButton,GroupBox以及CheckBox等控件)有一個FlatStyle屬性。這個屬性表明控件應該先被繪制。通過設置這個屬性,控件可以用以下幾種方式來繪制:
你可以發現,當FlatStyle屬性被設置為System後,控件的外觀就由用戶的操作系統設置所決定。這樣的話,要是用戶的操作系統為Windows XP,那麼相應控件的外觀就會呈現Windows XP的風格了。
當FlatStyle屬性被設置為System後,能改變視覺風格的控件如下:
Button 控件
RadioButton 控件
CheckBox 控件
GroupBox 控件
最後,還有一些控件在Windows XP和Visual Studio下是一樣的,這些控件如下:
Label 控件
LinkLabel 控件
DomainUpDown 控件
NumericUpDown 控件
CheckedListBox 控件
四.使用Manifest文件
如果你想在你的運用程序中運用Windows XP的外觀效果,你必須給你的工程添加一個Manifest文件(在建立工程過程中用來確定資源的一個文件)。這個文件指明了在工程中應用版本為6.0的Comctl32.dll文件(只要這個文件存在)。版本為6.0的Comctl32.dll文件包括了一些新的控件以及一些控件的新特性,它和以前版本的最大的差異就是它支持控件外觀效果的改變。
不像以前的版本,版本為6.0的Comctl32.dll是不可以被重新發布的。你只可以在包含它的操作系統中使用它的動態連接庫(DLL)。Windows XP既包含了版本為5.0的,又包含了版本為6.0的(在默認的情況下,運用程序是用版本為5.0的Comctl32.dll的)。在版本為6.0的Comctl32.dll中,包含了用戶控件和一般控件。你只要改變和這些控件相關的dll文件,就可以使它們呈現出Winodws XP的外觀風格了。
為了和用戶的計算機操作系統相協調,你必須在你的運用程序中建立一個Manifest文件來明確的指定其窗體控件使用的是版本為6.0的Comctl32.dll。該Manifest文件是一個XML文件,它包含在你的程序中,作為一個資源,或是在可執行文件目錄下的一個單獨的文件。
因此,為了使你的運用程序具有像Windows XP那樣的外觀效果,你必須:
1.若控件有FlatStyle屬性,則把它設置為FlatStyle.System
2.建立一個Manifest文件,將版本為6.0的Comctl32.dll捆綁到你的運用程序中(下面的例子中的Manifest文件可以將該Comctl32.dll捆綁到任何用Visual Studio.Net建立的運用程序中)
3.把這個資源(Manifest文件)添加到你的可執行文件並進行重建
五.將Windows XP視覺風格應用到控件中
學會應用Windows XP視覺風格的最簡單的方法就是學習做一個實例。本文最後就向大家介紹任何建立一個簡單的運用程序並使它的窗體上的控件具有Windows XP視覺風格。
接下來,我們要做的就是:
1.建立一個運用程序的工程,並在窗體上添加一些控件
2.建立一個Manifest文件,將所需的DLL捆綁到你的運用程序中
3.將該Manifest文件存放在可執行文件目錄下
4.添加一項資源(Manifest文件)到可執行文件
下面就開始創建新的工程……
創建工程:
1.新建一個Windows運用程序工程。(注:請記住工程名以及工程存放的目錄,下面有用)
2.從工具箱裡拖以下控件到窗體上並將它們排列好:
Button 控件
RadioButton 控件
ProgressBar 控件
CheckBox 控件
Label 控件
(注:雖然Label控件的外觀不會改變,它也被拖放到窗體上以作對比)
3.將Button,RadioButton,CheckBox等控件的FlatStyle屬性設置為System。(技巧:你可以在點擊每個控件的同時按下Ctrl鍵,這樣就可以同時選中這三個控件。然後,在FlatStyle屬性的下拉框中選定System即可)
4.雙擊Button控件以給它添加事件處理函數,代碼編輯器會自動打開。
5.添加以下一些代碼,設置ProgressBar控件的Value屬性,那樣你就可以看到新的一個進度條了:
' Visual Basic
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
ProgressBar1.Value = 50
End Sub
// C#
private void button1_Click(object sender, System.EventArgs e)
{
progressBar1.Value = 50;
}
6.從“生成”菜單上選擇“生成”選項。
7.最後,全部保存。
建立Manifest文件:
建立一個XML文件,將正確的版本的Comctl32.dll捆綁到你的運用程序中。
新建並編輯Manifest文件:
1.在解決方案資源管理器中,右擊工程名:添加->添加新項
2.在添加新項對話框中完成以下工作:
A.在左邊的方塊中點擊“本地項目項”。
B.在右邊的方塊中選定“文本文件”。
C.在名稱框中以下面的方式命名文件:
.exe.manifest。因此,如果你的運用程序名為MyXPApp,那麼你應該將這個XML文件命名為MyXPApp.exe.manifest。
3.點擊“打開”按鈕,文本編輯器中打開了你新建的文件。
4.將下面的XML添加到該文本文件:
version="1.0.0.0"
processorArchitecture="X86"
name="Microsoft.Winweb."
type="win32"