C# PropertyGrid所有用法(23页).doc
《C# PropertyGrid所有用法(23页).doc》由会员分享,可在线阅读,更多相关《C# PropertyGrid所有用法(23页).doc(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-C# PropertyGrid所有用法-第 22 页PropertyGrid 控件简介如果您使用过 Microsoft Visual Basic 或 Microsoft Visual Studio .NET,那么您一定使用过属性浏览器来浏览、查看和编辑一个或多个对象的属性。.NET 框架 PropertyGrid 控件是 Visual Studio .NET 属性浏览器的核心。PropertyGrid 控件显示对象或类型的属性,并主要通过使用反射来检索项目的属性。(反射是在运行时提供类型信息的技术。)下面的屏幕快照显示了 PropertyGrid 在窗体上的外观。图 1:窗体上的 Prope
2、rtyGridPropertyGrid 包含以下部分: 属性 可展开属性 属性类别标题 属性说明 属性编辑器 属性选项卡 命令窗格(显示控件设计器提供的设计器操作)创建 PropertyGrid 控件要使用 Visual Studio .NET 创建 PropertyGrid 控件,需要将该控件添加到工具箱中,因为默认情况下并不包含该控件。在 Tools (工具)菜单中,选择 Customize Toolbox (自定义工具箱)。在对话框中选择 Framework Components (框架组件)选项卡,然后选择 PropertyGrid 。如果您从命令行编译代码,请使用 /referenc
3、e 选项并指定 System.Windows.Forms.dll。以下代码显示了如何创建 PropertyGrid 控件并将其添加到窗体中。1. using System; 2. using System.Drawing; 3. using System.ComponentModel; 4. using System.Windows.Forms; 5. using System.Globalization; 6. public class OptionsDialog : System.Windows.Forms.Form 7. private System.Windows.Forms.Prop
4、ertyGrid OptionsPropertyGrid; 8. public OptionsDialog() 9. OptionsPropertyGrid = new PropertyGrid(); 10. OptionsPropertyGrid.Size = new Size(300, 250); 11. this.Controls.Add(OptionsPropertyGrid); 12. this.Text = 选项对话框; 13. STAThread 14. static void Main() 15. Application.Run(new OptionsDialog(); 何处使
5、用 PropertyGrid 控件 在应用程序中的很多地方,您都可以使用户与 PropertyGrid 进行交互,从而获得更丰富的编辑体验。例如,某个应用程序包含多个用户可以设置的“设置”或选项,其中一些可能十分复杂。您可以使用单选按钮、组合框或文本框来表示这些选项。但本文将逐步介绍如何使用 PropertyGrid 控件创建选项窗口来设置应用程序选项。上面所创建的 OptionsDialog 窗体即是选项窗口的开始。现在,我们创建一个名为 AppSettings 的类,其中包含映射到应用程序设置的所有属性。如果创建单独的类而不使用多个分散的变量,设置将更便于管理和维护。1. public c
6、lass AppSettings 2. private bool saveOnClose = true; 3. private string greetingText = 欢迎使用应用程序!; 4. private int itemsInMRU = 4; 5. private int maxRepeatRate = 10; 6. private bool settingsChanged = false; 7. private string appVersion = 1.0; 8. public bool SaveOnClose 9. get return saveOnClose; 10. se
7、t saveOnClose = value; 11. public string GreetingText 12. get return greetingText; 13. set greetingText = value; 14. public int MaxRepeatRate 15. get return maxRepeatRate; 16. set maxRepeatRate = value; 17. public int ItemsInMRUList 18. get return itemsInMRU; 19. set itemsInMRU = value; 20. public b
8、ool SettingsChanged 21. get return settingsChanged; 22. set settingsChanged = value; 23. public string AppVersion 24. get return appVersion; 25. set appVersion = value; 选项窗口上的 PropertyGrid 将使用此类,因此请将类定义添加到应用程序项目中,在添加时可创建新文件或将其添加到现有窗体源代码的下方。选择对象要标识 PropertyGrid 显示的内容,请将 PropertyGrid.SelectedObject 属性
9、设置为一个对象实例。然后,PropertyGrid 将完成其余的工作。每次设置 SelectedObject 时,PropertyGrid 都会刷新显示的属性。这提供了一种简单的方法来强制刷新属性,或在运行时切换对象。您还可以调用 PropertyGrid.Refresh 方法来刷新属性。接下来,您需要更新 OptionsDialog 构造函数中的代码,以创建一个 AppSettings 对象,并将其设置为 PropertyGrid.SelectedObject 属性的值。1. public OptionsDialog() 2. OptionsPropertyGrid = new Proper
10、tyGrid(); 3. OptionsPropertyGrid.Size = new Size(300, 250); 4. this.Controls.Add(OptionsPropertyGrid); 5. this.Text = 选项对话框; 6. / 创建 AppSettings 类并在 PropertyGrid 中显示该类。 7. AppSettings appset = new AppSettings(); 8. OptionsPropertyGrid.SelectedObject = appset; 编译并运行该应用程序。下面的屏幕快照显示了应用程序的外观。图 2:Propert
11、yGrid 中选定的 AppSettings 类自定义 PropertyGrid 控件您可以修改 PropertyGrid 的某些外观特征以满足自己的需要。可以更改某些属性的显示方式,甚至选择不显示某些属性。那么,如何对 PropertyGrid 进行自定义呢?更改 PropertyGrid 的外观特征PropertyGrid 的许多外观特征都可以自定义。下面列出了其中的一部分: 通过 HelpBackColor 、HelpForeColor 和 HelpVisible 属性可以更改背景颜色、更改字体颜色或隐藏说明窗格。 通过 ToolbarVisible 属性可以隐藏工具栏,通过 BackC
12、olor 属性可以更改工具栏的颜色,通过 LargeButtons 属性可以显示大工具栏按钮。 使用 PropertySort 属性可以按字母顺序对属性进行排序和分类。 通过 BackColor 属性可以更改拆分器的颜色。 通过 LineColor 属性可以更改网格线和边框。本示例中的选项窗口不需要工具栏,因此可以将 ToolbarVisible 设置为 false 。其余属性均保留默认设置。更改属性的显示方式要更改某些属性的显示方式,您可以对这些属性应用不同的特性。特性是用于为类型、字段、方法和属性等编程元素添加批注的声明标记,在运行时可以使用反射对其进行检索。下面列出了其中的一部分: De
13、scriptionAttribute - 设置显示在属性下方说明帮助窗格中的属性文本。这是一种为活动属性(即具有焦点的属性)提供帮助文本的有效方法。可以将此特性应用于 MaxRepeatRate 属性。 CategoryAttribute - 设置属性在网格中所属的类别。当您需要将属性按类别名称分组时,此特性非常有用。如果没有为属性指定类别,该属性将被分配给杂项 类别。可以将此特性应用于所有属性。 BrowsableAttribute 表示是否在网格中显示属性。此特性可用于在网格中隐藏属性。默认情况下,公共属性始终显示在网格中。可以将此特性应用于 SettingsChanged 属性。 Rea
14、dOnlyAttribute 表示属性是否为只读。此特性可用于禁止在网格中编辑属性。默认情况下,带有 get 和 set 访问函数的公共属性在网格中是可以编辑的。可以将此特性应用于 AppVersion 属性。 DefaultValueAttribute 表示属性的默认值。如果希望为属性提供默认值,然后确定该属性值是否与默认值相同,则可使用此特性。可以将此特性应用于所有属性。 DefaultPropertyAttribute 表示类的默认属性。在网格中选择某个类时,将首先突出显示该类的默认属性。可以将此特性应用于 AppSettings 类。现在,我们将其中的一些特性应用于 AppSettin
15、gs 类,以更改属性在 PropertyGrid 中的显示方式。1. DefaultPropertyAttribute(SaveOnClose) 2. public class AppSettings 3. private bool saveOnClose = true; 4. private string greetingText = 欢迎使用应用程序!; 5. private int maxRepeatRate = 10; 6. private int itemsInMRU = 4; 7. private bool settingsChanged = false; 8. private s
16、tring appVersion = 1.0; 9. CategoryAttribute(文档设置), 10. DefaultValueAttribute(true) 11. public bool SaveOnClose 12. get return saveOnClose; 13. set saveOnClose = value; 14. CategoryAttribute(全局设置), 15. ReadOnlyAttribute(true), 16. DefaultValueAttribute(欢迎使用应用程序!) 17. public string GreetingText 18. g
17、et return greetingText; 19. set greetingText = value; 20. CategoryAttribute(全局设置), 21. DefaultValueAttribute(4) 22. public int ItemsInMRUList 23. get return itemsInMRU; 24. set itemsInMRU = value; 25. DescriptionAttribute(以毫秒表示的文本重复率。), 26. CategoryAttribute(全局设置), 27. DefaultValueAttribute(10) 28.
18、public int MaxRepeatRate 29. get return maxRepeatRate; 30. set maxRepeatRate = value; 31. BrowsableAttribute(false), 32. DefaultValueAttribute(false) 33. public bool SettingsChanged 34. get return settingsChanged; 35. set settingsChanged = value; 36. CategoryAttribute(版本), 37. DefaultValueAttribute(
19、1.0), 38. ReadOnlyAttribute(true) 39. public string AppVersion 40. get return appVersion; 41. set appVersion = value; 将这些特性应用于 AppSettings 类后,编译并运行该应用程序。下面的屏幕快照显示了应用程序的外观。图 3:PropertyGrid 中显示的带有类别和默认值的属性使用此版本的选项窗口后,您会注意到以下几点: 显示窗口时,将首先突出显示 SaveOnClose 属性。 选中 MaxRepeatRate 属性时,说明帮助窗格中将显示“以毫秒表示的文本重复率”
20、。 SaveOnClose 属性显示在“文档设置”类别下。其他属性分别显示在“全局设置”和“版本”类别下。 SettingsChanged 属性将不再显示。 AppVersion 属性为只读。只读属性以灰显文本显示。 如果 SaveOnClose 属性包含的值不是 true ,该值将以粗体显示。PropertyGrid 使用粗体文本表示包含非默认值的属性。显示复杂属性到现在为止,选项窗口显示的都是简单的类型,如整数、布尔值和字符串。那么,如何显示更复杂的类型呢?如果应用程序需要跟踪窗口大小、文档字体或工具栏颜色等信息,该如何处理呢?.NET 框架提供的某些数据类型具有特殊的显示功能,能使这些类
21、型在 PropertyGrid 中更具可用性。对所提供类型的支持 首先,请更新 AppSettings 类,为窗口大小(Size 类型)、窗口字体(Font 类型)和工具栏颜色(Color 类型)添加新属性。1. DefaultPropertyAttribute(SaveOnClose) 2. public class AppSettings 3. private bool saveOnClose = true; 4. private string greetingText = 欢迎使用应用程序!; 5. private int maxRepeatRate = 10; 6. private i
22、nt itemsInMRU = 4; 7. private bool settingsChanged = false; 8. private string appVersion = 1.0; 9. private Size windowSize = new Size(100,100); 10. private Font windowFont = new Font(宋体, 9, FontStyle.Regular); 11. private Color toolbarColor = SystemColors.Control; 12. CategoryAttribute(文档设置), 13. De
23、faultValueAttribute(true) 14. public bool SaveOnClose 15. get return saveOnClose; 16. set saveOnClose = value; 17. CategoryAttribute(文档设置) 18. public Size WindowSize 19. get return windowSize; 20. set windowSize = value; 21. CategoryAttribute(文档设置) 22. public Font WindowFont 23. get return windowFon
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# PropertyGrid所有用法23页 PropertyGrid 所有 用法 23
限制150内