使用Vista风格的控件.NET 2.0
请从原文处下载链接
源代码
http://www.codeproject.com/vista/VistaControls/vista_controls.zip
演示实例
http://www.codeproject.com/vista/VistaControls/vista_controls__demo_.zip
简介
Vista控件集(Vista Controls)是一个于微软Windows Vista操作系统下提供新样式控件的一个库。
如果你在.NET 2.0的应用程序中使用了 System.Windows.Forms程序集中的树状图Treeview,列表视图Listview, 打开文件对话框OpenFileDialog, 保存文件对话框SaveFileDialog 和目录浏览对话框FolderBrowserDialog,当你的程序运行于Vista下面的时候,你会发现你的程序风格并没有任何变化,并没有自动调用新的Vista界面风格,还是以前的Windows XP的风格。
在Vista Controls中,你将发现有五个代替的类,它们将使得运行在Vista下面的程序看上去是Vista的样子,而如果你在早期的Windows系统中使用这些程序时,还是以前的风格。这就给你减轻了很大的工作量,很容易你的程序就可以同时适应Vista和以前版本Windows了。
另外,Vista控件集包括了一个新加入Vista的控件:Command Link。因为这个控件在早期的Windows中并不存在,所以当程序运行在这些Windows系统中时,它会模仿Vista风格。
代码使用
在Vista控件集中的类拥有几乎一样的公共接口和功能(很少的区别,在接下来的文字中描述),所以,你只需把这些早期的控件实例的类:
System.Windows.Forms.TreeView, System.Windows.Forms.ListView, System.Windows.Forms.FileDialog, System.Windows.Forms.OpenFileDialog, System.Windows.Forms.SaveFileDialog 和 System.Windows.Forms.FolderBrowserDialog
分别替换成新的类:
Vista_Api.TreeView, Vista_Api.ListView, Vista_Api.FileDialog, Vista_Api.OpenFileDialog. Vista_Api.SaveFileDialog 和Vista_Api.FolderBrowserDialog
如果Vista风格不被支持,这些控件集中的类会自动返回以前常规的样子(如果你的程序在运行早期的Windows)。也就是说,如果你的程序不是运行在Vista下面,你依然可以继续使用这些类。这些类支持所以安装了.NET 2.0的平台,并显示最可接受的样子。
下面列举了Vista控件集和System.Windows.Forms的一些不同之处:
1,SupportMultiDottedExtensions属性在Vista风格的对话框中不起作用。
2,因为,“以只读方式打开”被实现成“打开”按钮的一个下拉选项,而不是复选按钮,所以设置ReadOnlyChecked属性,对于Vista风格对话框不起作用。不过ReadOnlyChecked可以在打开对话框关闭后,决定用户是否选择了“以只读方式打开”的选项。
3,对于VistaFolderBrowserDialog类来说,在Vista下的目录浏览风格和以前的大相径庭。如果你要在程序中使用FolderBrowserDialog,而且将会在Vista和早期版本下运行,别忘了,一定要好好测试一下。
4,RootFolder属性在Vista风格的对话框中没有用处。
5,ShowNewFolderButton 属性对Vista风格的对话框没有用处,那个按钮总是可见的。
6,在Vista下,你可以把UseDescriptionForTitle 设置为True,于是Description 属性中的值就会显示在对话框的标题中。不过,这个方法对于早期版本的对话框不起作用。
7,另外,需要指出的是,如果你只是引用了文件对话框,程序中并不能使用Vista的文件对话框。你需要引用所有的Vista控件集的assembly。
控件
常规对话框
打开文件,保存文件和打开目录对话框
private void button6_Click(object sender, EventArgs e)
{
Vista_Api.OpenFileDialog d = new Vista_Api.OpenFileDialog();
d.ShowDialog();
}
private void button5_Click(object sender, EventArgs e)
{
Vista_Api.SaveFileDialog d = new Vista_Api.SaveFileDialog();
d.ShowDialog();
}
private void button4_Click(object sender, EventArgs e)
{
FolderBrowserDialog d = new FolderBrowserDialog();
d.ShowDialog();
}
Command Links
不像以前的command button和radio button,Command link是一个全新的控件,它们有更长的Label,让用户很容易选择想要的选项,而且,还减少了用户操作的次数。
private void commandLink2_Click(object sender, EventArgs e)
{
List<vista_api.commandlink> links=new List<vista_api.commandlink>();
Vista_Api.CommandLink cl = new Vista_Api.CommandLink(
Vista_Api.CommandLink.DisplayStyle.Arrow, "Lorem Ipsum",
"Lorem Ipsum");
cl = new Vista_Api.CommandLink(Vista_Api.CommandLink.DisplayStyle.Arrow,
"Lorem Ipsum", "Lorem Ipsum");
cl.BackColor = SystemColors.Window;
links.Add(cl);
cl = new Vista_Api.CommandLink(Vista_Api.CommandLink.DisplayStyle.Arrow,
"Lorem Ipsum", "Lorem Ipsum");
cl.BackColor = SystemColors.Window;
links.Add(cl);
cl = new Vista_Api.CommandLink(Vista_Api.CommandLink.DisplayStyle.Shield,
"Lorem Ipsum", "Lorem Ipsum");
cl.BackColor = SystemColors.Window;
links.Add(cl);
Vista_Api.CommandDialog cd = new Vista_Api.CommandDialog(links);
cd.Title = "Lorem Ipsum";
cd.Description = "Lorem Ipsum";
cd.ShowDialog();
}
ListView 和 TreeView
TreeViews 提高:
最流行的外观
鼠标滑过时的淡入淡出效果
展开/收敛节点时的过渡
ListViews 提高:
最流行的外观
Enables users to see more properties for a smaller set of items at a time without requiring awkward horizontal scrolling.
当停留在项上时,有个停留状态实现淡入淡出的效果。
Other details include rollover and hover states that provide a view that looks interactive and responsive, and the themed transparent selection rectangles.
兴趣
方法Vista_Api.Dialog.Native.NativeMethods可以检测Windows的版本。
/// <value>
/// Returns true on Windows Vista or newer operating systems; otherwise,
/// false.
/// </value>
[Browsable(false)]
public static bool IsVistaOrLater
{
get
{
return Environment.OSVersion.Platform ==
PlatformID.Win32NT && Environment.OSVersion.Version.Major >= 6;
}
}
历史
1.0 (19 March, 2007): 第一次发布
原作者Pedro M. C. Cardoso
这里是原作者的个人简介http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=199839