C# PropertyGrid所有用法.docx

上传人:b****5 文档编号:8537713 上传时间:2023-01-31 格式:DOCX 页数:35 大小:30.99KB
下载 相关 举报
C# PropertyGrid所有用法.docx_第1页
第1页 / 共35页
C# PropertyGrid所有用法.docx_第2页
第2页 / 共35页
C# PropertyGrid所有用法.docx_第3页
第3页 / 共35页
C# PropertyGrid所有用法.docx_第4页
第4页 / 共35页
C# PropertyGrid所有用法.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

C# PropertyGrid所有用法.docx

《C# PropertyGrid所有用法.docx》由会员分享,可在线阅读,更多相关《C# PropertyGrid所有用法.docx(35页珍藏版)》请在冰豆网上搜索。

C# PropertyGrid所有用法.docx

C#PropertyGrid所有用法

PropertyGrid控件简介

如果您使用过Microsoft®VisualBasic®或MicrosoftVisualStudio.NET,那么您一定使用过属性浏览器来浏览、查看和编辑一个或多个对象的属性。

.NET框架PropertyGrid控件是VisualStudio.NET属性浏览器的核心。

PropertyGrid控件显示对象或类型的属性,并主要通过使用反射来检索项目的属性。

(反射是在运行时提供类型信息的技术。

下面的屏幕快照显示了PropertyGrid在窗体上的外观。

图1:

窗体上的PropertyGrid

PropertyGrid包含以下部分:

属性

可展开属性

属性类别标题

属性说明

属性编辑器

属性选项卡

命令窗格(显示控件设计器提供的设计器操作)

创建PropertyGrid控件

要使用VisualStudio.NET创建PropertyGrid控件,需要将该控件添加到工具箱中,因为默认情况下并不包含该控件。

在Tools(工具)菜单中,选择CustomizeToolbox(自定义工具箱)。

在对话框中选择FrameworkComponents(框架组件)选项卡,然后选择PropertyGrid。

如果您从命令行编译代码,请使用/reference选项并指定System.Windows.Forms.dll。

以下代码显示了如何创建PropertyGrid控件并将其添加到窗体中。

1.usingSystem;

2.usingSystem.Drawing;

3.usingSystem.ComponentModel;

4.usingSystem.Windows.Forms;

5.usingSystem.Globalization;

6.publicclassOptionsDialog:

System.Windows.Forms.Form

7.{

8.privateSystem.Windows.Forms.PropertyGridOptionsPropertyGrid;

9.publicOptionsDialog()

10.{

11.OptionsPropertyGrid=newPropertyGrid();

12.OptionsPropertyGrid.Size=newSize(300,250);

13.this.Controls.Add(OptionsPropertyGrid);

14.this.Text="选项对话框";

15.}

16.[STAThread]

17.staticvoidMain()

18.{

19.Application.Run(newOptionsDialog());

20.}

21.}

何处使用PropertyGrid控件

在应用程序中的很多地方,您都可以使用户与PropertyGrid进行交互,从而获得更丰富的编辑体验。

例如,某个应用程序包含多个用户可以设置的“设置”或选项,其中一些可能十分复杂。

您可以使用单选按钮、组合框或文本框来表示这些选项。

但本文将逐步介绍如何使用PropertyGrid控件创建选项窗口来设置应用程序选项。

上面所创建的OptionsDialog窗体即是选项窗口的开始。

现在,我们创建一个名为AppSettings的类,其中包含映射到应用程序设置的所有属性。

如果创建单独的类而不使用多个分散的变量,设置将更便于管理和维护。

1.publicclassAppSettings{

2.privateboolsaveOnClose=true;

3.privatestringgreetingText="欢迎使用应用程序!

";

4.privateintitemsInMRU=4;

5.privateintmaxRepeatRate=10;

6.privateboolsettingsChanged=false;

7.privatestringappVersion="1.0";

8.publicboolSaveOnClose

9.{

10.get{returnsaveOnClose;}

11.set{saveOnClose=value;}

12.}

13.publicstringGreetingText

14.{

15.get{returngreetingText;}

16.set{greetingText=value;}

17.}

18.publicintMaxRepeatRate

19.{

20.get{returnmaxRepeatRate;}

21.set{maxRepeatRate=value;}

22.}

23.publicintItemsInMRUList

24.{

25.get{returnitemsInMRU;}

26.set{itemsInMRU=value;}

27.}

28.publicboolSettingsChanged

29.{

30.get{returnsettingsChanged;}

31.set{settingsChanged=value;}

32.}

33.publicstringAppVersion

34.{

35.get{returnappVersion;}

36.set{appVersion=value;}

37.}

38.}

选项窗口上的PropertyGrid将使用此类,因此请将类定义添加到应用程序项目中,在添加时可创建新文件或将其添加到现有窗体源代码的下方。

选择对象

要标识PropertyGrid显示的内容,请将PropertyGrid.SelectedObject属性设置为一个对象实例。

然后,PropertyGrid将完成其余的工作。

每次设置SelectedObject时,PropertyGrid都会刷新显示的属性。

这提供了一种简单的方法来强制刷新属性,或在运行时切换对象。

您还可以调用PropertyGrid.Refresh方法来刷新属性。

接下来,您需要更新OptionsDialog构造函数中的代码,以创建一个AppSettings对象,并将其设置为PropertyGrid.SelectedObject属性的值。

1.publicOptionsDialog()

2.{

3.OptionsPropertyGrid=newPropertyGrid();

4.OptionsPropertyGrid.Size=newSize(300,250);

5.this.Controls.Add(OptionsPropertyGrid);

6.this.Text="选项对话框";

7.//创建AppSettings类并在PropertyGrid中显示该类。

8.AppSettingsappset=newAppSettings();

9.OptionsPropertyGrid.SelectedObject=appset;

10.}

编译并运行该应用程序。

下面的屏幕快照显示了应用程序的外观。

图2:

PropertyGrid中选定的AppSettings类

自定义PropertyGrid控件

您可以修改PropertyGrid的某些外观特征以满足自己的需要。

可以更改某些属性的显示方式,甚至选择不显示某些属性。

那么,如何对PropertyGrid进行自定义呢?

更改PropertyGrid的外观特征

PropertyGrid的许多外观特征都可以自定义。

下面列出了其中的一部分:

通过HelpBackColor、HelpForeColor和HelpVisible属性可以更改背景颜色、更改字体颜色或隐藏说明窗格。

通过ToolbarVisible属性可以隐藏工具栏,通过BackColor属性可以更改工具栏的颜色,通过LargeButtons属性可以显示大工具栏按钮。

使用PropertySort属性可以按字母顺序对属性进行排序和分类。

通过BackColor属性可以更改拆分器的颜色。

通过LineColor属性可以更改网格线和边框。

本示例中的选项窗口不需要工具栏,因此可以将ToolbarVisible设置为false。

其余属性均保留默认设置。

更改属性的显示方式

要更改某些属性的显示方式,您可以对这些属性应用不同的特性。

特性是用于为类型、字段、方法和属性等编程元素添加批注的声明标记,在运行时可以使用反射对其进行检索。

下面列出了其中的一部分:

DescriptionAttribute-设置显示在属性下方说明帮助窗格中的属性文本。

这是一种为活动属性(即具有焦点的属性)提供帮助文本的有效方法。

可以将此特性应用于MaxRepeatRate属性。

CategoryAttribute-设置属性在网格中所属的类别。

当您需要将属性按类别名称分组时,此特性非常有用。

如果没有为属性指定类别,该属性将被分配给杂项类别。

可以将此特性应用于所有属性。

BrowsableAttribute–表示是否在网格中显示属性。

此特性可用于在网格中隐藏属性。

默认情况下,公共属性始终显示在网格中。

可以将此特性应用于SettingsChanged属性。

ReadOnlyAttribute–表示属性是否为只读。

此特性可用于禁止在网格中编辑属性。

默认情况下,带有get和set访问函数的公共属性在网格中是可以编辑的。

可以将此特性应用于AppVersion属性。

DefaultValueAttribute–表示属性的默认值。

如果希望为属性提供默认值,然后确定该属性值是否与默认值相同,则可使用此特性。

可以将此特性应用于所有属性。

DefaultPropertyAttribute–表示类的默认属性。

在网格中选择某个类时,将首先突出显示该类的默认属性。

可以将此特性应用于AppSettings类。

现在,我们将其中的一些特性应用于AppSettings类,以更改属性在PropertyGrid中的显示方式。

1.[DefaultPropertyAttribute("SaveOnClose")]

2.publicclassAppSettings{

3.privateboolsaveOnClose=true;

4.privatestringgreetingText="欢迎使用应用程序!

";

5.privateintmaxRepeatRate=10;

6.privateintitemsInMRU=4;

7.privateboolsettingsChanged=false;

8.privatestringappVersion="1.0";

9.[CategoryAttribute("文档设置"),

10.DefaultValueAttribute(true)]

11.publicboolSaveOnClose

12.{

13.get{returnsaveOnClose;}

14.set{saveOnClose=value;}

15.}

16.[CategoryAttribute("全局设置"),

17.ReadOnlyAttribute(true),

18.DefaultValueAttribute("欢迎使用应用程序!

")]

19.publicstringGreetingText

20.{

21.get{returngreetingText;}

22.set{greetingText=value;}

23.}

24.[CategoryAttribute("全局设置"),

25.DefaultValueAttribute(4)]

26.publicintItemsInMRUList

27.{

28.get{returnitemsInMRU;}

29.set{itemsInMRU=value;}

30.}

31.[DescriptionAttribute("以毫秒表示的文本重复率。

"),

32.CategoryAttribute("全局设置"),

33.DefaultValueAttribute(10)]

34.publicintMaxRepeatRate

35.{

36.get{returnmaxRepeatRate;}

37.set{maxRepeatRate=value;}

38.}

39.[BrowsableAttribute(false),

40.DefaultValueAttribute(false)]

41.publicboolSettingsChanged

42.{

43.get{returnsettingsChanged;}

44.set{settingsChanged=value;}

45.}

46.[CategoryAttribute("版本"),

47.DefaultValueAttribute("1.0"),

48.ReadOnlyAttribute(true)]

49.publicstringAppVersion

50.{

51.get{returnappVersion;}

52.set{appVersion=value;}

53.}

54.}

将这些特性应用于AppSettings类后,编译并运行该应用程序。

下面的屏幕快照显示了应用程序的外观。

图3:

PropertyGrid中显示的带有类别和默认值的属性

使用此版本的选项窗口后,您会注意到以下几点:

显示窗口时,将首先突出显示SaveOnClose属性。

选中MaxRepeatRate属性时,说明帮助窗格中将显示“以毫秒表示的文本重复率”。

SaveOnClose属性显示在“文档设置”类别下。

其他属性分别显示在“全局设置”和“版本”类别下。

SettingsChanged属性将不再显示。

AppVersion属性为只读。

只读属性以灰显文本显示。

如果SaveOnClose属性包含的值不是true,该值将以粗体显示。

PropertyGrid使用粗体文本表示包含非默认值的属性。

显示复杂属性

到现在为止,选项窗口显示的都是简单的类型,如整数、布尔值和字符串。

那么,如何显示更复杂的类型呢?

如果应用程序需要跟踪窗口大小、文档字体或工具栏颜色等信息,该如何处理呢?

.NET框架提供的某些数据类型具有特殊的显示功能,能使这些类型在PropertyGrid中更具可用性。

对所提供类型的支持

首先,请更新AppSettings类,为窗口大小(Size类型)、窗口字体(Font类型)和工具栏颜色(Color类型)添加新属性。

1.[DefaultPropertyAttribute("SaveOnClose")]

2.publicclassAppSettings{

3.privateboolsaveOnClose=true;

4.privatestringgreetingText="欢迎使用应用程序!

";

5.privateintmaxRepeatRate=10;

6.privateintitemsInMRU=4;

7.privateboolsettingsChanged=false;

8.privatestringappVersion="1.0";

9.privateSizewindowSize=newSize(100,100);

10.privateFontwindowFont=newFont("宋体",9,FontStyle.Regular);

11.privateColortoolbarColor=SystemColors.Control;

12.[CategoryAttribute("文档设置"),

13.DefaultValueAttribute(true)]

14.publicboolSaveOnClose

15.{

16.get{returnsaveOnClose;}

17.set{saveOnClose=value;}

18.}

19.[CategoryAttribute("文档设置")]

20.publicSizeWindowSize

21.{

22.get{returnwindowSize;}

23.set{windowSize=value;}

24.}

25.[CategoryAttribute("文档设置")]

26.publicFontWindowFont

27.{

28.get{returnwindowFont;}

29.set{windowFont=value;}

30.}

31.[CategoryAttribute("全局设置")]

32.publicColorToolbarColor

33.{

34.get{returntoolbarColor;}

35.set{toolbarColor=value;}

36.}

37.[CategoryAttribute("全局设置"),

38.ReadOnlyAttribute(true),

39.DefaultValueAttribute("欢迎使用应用程序!

")]

40.publicstringGreetingText

41.{

42.get{returngreetingText;}

43.set{greetingText=value;}

44.}

45.[CategoryAttribute("全局设置"),

46.DefaultValueAttribute(4)]

47.publicintItemsInMRUList

48.{

49.get{returnitemsInMRU;}

50.set{itemsInMRU=value;}

51.}

52.[DescriptionAttribute("以毫秒表示的文本重复率。

"),

53.CategoryAttribute("全局设置"),

54.DefaultValueAttribute(10)]

55.publicintMaxRepeatRate

56.{

57.get{returnmaxRepeatRate;}

58.set{maxRepeatRate=value;}

59.}

60.[BrowsableAttribute(false),

61.DefaultValueAttribute(false)]

62.publicboolSettingsChanged

63.{

64.get{returnsettingsChanged;}

65.set{settingsChanged=value;}

66.}

67.[CategoryAttribute("版本"),

68.DefaultValueAttribute("1.0"),

69.ReadOnlyAttribute(true)]

70.publicstringAppVersion

71.{

72.get{returnappVersion;}

73.set{appVersion=value;}

74.}

75.}

下面的屏幕快照显示了新属性在PropertyGrid中的外观。

图4:

显示在PropertyGrid中的.NET框架数据类型

请注意,WindowFont属性带有一个省略号(...)按钮,按下该按钮将显示字体选择对话框。

此外,还可以展开该属性以显示更多的Font属性。

某些Font属性提供有关字体的值和详细信息的下拉列表。

您可以展开WindowSize属性以显示Size类型的更多属性。

最后,请注意,ToolbarColor属性包含一个选定颜色的样本,以及一个用于选择不同颜色的自定义下拉列表。

对于这些以及其他数据类型,.NET框架提供了其他的类,可以使在PropertyGrid中的编辑更加容易。

对自定义类型的支持

现在,您需要在AppSettings类中添加另外两个属性,即DefaultFileName和SpellCheckOptions。

DefaultFileName属性用于获取或设置字符串;SpellCheckOptions属性用于获取或设置SpellingOptions类的实例。

SpellingOptions类是一个新类,用于管理应用程序的拼写检查属性。

对于何时创建单独的类以管理对象的属性,并没有严格的规定,而取决于您的整个类设计。

将SpellingOptions类定义添加到应用程序项目中-可以添加到新文件中,也可以添加到窗体源代码的下方。

1.[DescriptionAttribute("展开以查看应用程序的拼写选项。

")]

2.publicclassSpellingOptions{

3.privateboolspellCheckWhileTyping=true;

4.privateboolspellCheckCAPS=false;

5.privateboolsuggestCorrections=true;

6.[DefaultValueAttribute(true)]

7.publicboolSpellCheckWhileTyping

8.{

9.get{returnspellCheckWhileTyping;}

10.set{spellCheckWhileTyping=value;}

11.}

12.[DefaultValueAttribute(false)]

13.publicboolSpellCheckCAPS

14.{

15.get{returnspellCheckCAPS;}

16.set{spellCheckCAPS=value;}

17.}

18.[DefaultValueAttribute(true)]

19.pub

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1