版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、如果您使用过览器来浏览、Microsoft?VisualBasic?查看和编辑一个或多个对象的属性MicrosoftVisualStudio.NET.NET框架PropertyGrid,那么您一定使用过属性浏控件是VisualStudio.NET属性浏览器的核心。PropertyGrid控件显示对象或类型的属性,并主要通过使用反射来检索项目的属性。(反射是在运行时提供类型信息的技术。)F面的屏幕快照显示了PropertyGrid在窗体上的外观。图1:窗体上的PropertyGridPropertyGrid包含以下部分:属性可展开属性属性类别标题属性说明属性编辑器属性选项卡命令窗格(显示控件设计
2、器提供的设计器操作)创建 PropertyGrid控件要使用 Visual Studio .NET 创建 PropertyGrid下并不包含该控件。在Tools(工具)菜单中,选择控件,需要将该控件添加到工具箱中,因为默认情况Customize Toolbox(自定义工具箱)。在对话框中选择 Framework Components(框架组件)选项卡,然后选择PropertyGrid如果您从命令行编译代码,请使用/reference以下代码显示了如何创建PropertyGrid控件并将其添加到窗体中o.using System.ComponentModel;using Syste
3、m.Globalization;.10.public OptionsDialog()OptionsPropertyGrid = new PropertyGrid。;OptionsPropertyGrid.Size = new Size(300, 250);this.Text =" 选项对话框"11.12.STAThread13.static void Main()1.usingSystem;usingSystem.Drawing;14.15.Application.Run(newOptionsDialog();16.17.何处使用PropertyGrid控件在
4、应用程序中的很多地方,您都可以使用户与PropertyGrid进行交互,从而获得更丰富的编辑体验。例如,某个应用程序包含多个用户可以设置的设置”或选项,其中一些可能十分复杂。您可以使用单选按钮、组合框或文本框来表示这些选项。但本文将逐步介2I如何使用PropertyGrid控件创建选项窗口来设置应用程序选项。上面所创建的OptionsDialog窗体即是选项窗口的开始。现在,我们创建一个名为AppSettings的类,其中包含映射到应用程序设置的所有属性。如果创建单独的类而不使用多个分散的变量,设置将更便于管理和维护。1. publicclassAppSettings2. privateboo
5、lsaveOnClose=true;3. privatestringgreetingText="欢迎使用应用程序!"4. privateintitemsInMRU=4;5. privateintmaxRepeatRate=10;6. privateboolsettingsChanged=false;7. privatestringappVersion="1.0"8. publicboolSaveOnClose9. 10. getreturnsaveOnClose;11. setsaveOnClose=value;12. 13. publicstringG
6、reetingText14. 15. getreturngreetingText;16. setgreetingText=value;17. 18. publicintMaxRepeatRate19. 20. getreturnmaxRepeatRate;21. setmaxRepeatRate=value;22. 23. publicintItemsInMRUList24. 25. getreturnitemsInMRU;26. setitemsInMRU=value;27. 28. publicboolSettingsChanged29. 30. getreturnsettingsChan
7、ged;31. setsettingsChanged=value;32. 33. publicstringAppVersion34. 35. getreturnappVersion;36. setappVersion=value;37. 38. 选项窗口上的PropertyGrid将使用此类,因此请将类定义添加到应用程序项目中,在添加时可创建新文件或将其添加到现有窗体源代码的下方。选择对象要标识PropertyGrid显示的内容,请将PropertyGrid.SelectedObject属性设置为一个对象实例。然后,PropertyGrid将完成其余的工作。每次设置SelectedObject
8、时,PropertyGrid都会刷新显示的属性。这提供了一种简单的方法来强制刷新属性,或在运行时切换对象。您还可以调用PropertyGrid.Refresh方法来刷新属性。接下来,您需要更新OptionsDialog构造函数中的代码,以创建一个AppSettings对象,并将其设置为PropertyGrid.SelectedObject属性的值。1. publicOptionsDialog()2. 3. OptionsPropertyGrid=newPropertyGrid。;4. OptionsPropertyGrid.Size=newSize(300,250);5. this.Text=
9、"选项对话框"6. /创建AppSettings类并在PropertyGrid中显示该类。7. AppSettingsappset=newAppSettings();8. OptionsPropertyGrid.SelectedObject=appset;9. 编译并运行该应用程序。下面的屏幕快照显示了应用程序的外观。图2:PropertyGrid中选定的AppSettings类自定义PropertyGrid控件您可以修改PropertyGrid的某些外观特征以满足自己的需要。可以更改某些属性的显示方式,甚至选择不显示某些属性。那么,如何对PropertyGrid进行自定义
10、呢?更改PropertyGrid的外观特征PropertyGrid的许多外观特征都可以自定义。下面列出了其中的一部分: 通过HelpBackC010r、HelpForeColor和HelpVisible属性可以更改背景颜色、更改字体颜色或隐藏说明窗格。 通过ToolbarVisible属性可以隐藏工具栏,通过BackColor属性可以更改工具栏的颜色,通过LargeButtons属性可以显示大工具栏按钮。 使用PropertySort属性可以按字母顺序对属性进行排序和分类。 通过BackColor属性可以更改拆分器的颜色。 通过LineColor属性可以更改网格线和边框。本示例中的选项窗口不需
11、要工具栏,因此可以将ToolbarVisible设置为false。其余属性均保留默认设置。更改属性的显示方式要更改某些属性的显示方式,您可以对这些属性应用不同的特性。特性是用于为类型、字段、方法和属性等编程元素添加批注的声明标记,在运行时可以使用反射对其进行检索。下面列出了其中的一部分: DescriptionAttribute-设置显示在属性下方说明帮助窗格中的属性文本。这是一种为活动属性(即具有焦点的属性)提供帮助文本的有效方法。可以将此特性应用于MaxRepeatRate属性。 CategoryAttribute-设置属性在网格中所属的类别。当您需要将属性按类别名称分组时,此特性非常有用
12、。如果没有为属性指定类别,该属性将被分配给杂项类别。可以将此特性应用于所有属性。 BrowsableAttribute-表示是否在网格中显示属性。此特性可用于在网格中隐藏属性。默认情况下,公共属性始终显示在网格中。可以将此特性应用于SettingsChanged属性。 ReadOnlyAttribute-表示属性是否为只读。此特性可用于禁止在网格中编辑属性。默认情况下,带有get和set访问函数的公共属性在网格中是可以编辑的。可以将此特性应用于AppVersion属性。 DefaultValueAttribute表示属性的默认值。如果希望为属性提供默认值,然后确定该属性值是否与默认值相同,则可
13、使用此特性。可以将此特性应用于所有属性。 DefaultPropertyAttribute-表示类的默认属性。在网格中选择某个类时,将首先突出显示该类的默认属性。可以将此特性应用于AppSettings类。现在,我们将其中的一些特性应用于AppSettings类,以更改属性在PropertyGrid中的显示方式。1. DefaultPropertyAttribute("SaveOnClose")2. publicclassAppSettings3. privateboolsaveOnClose=true;4. privatestringgreetingText="
14、欢迎使用应用程序!"5. privateintmaxRepeatRate=10;6. privateintitemsInMRU=4;7. privateboolsettingsChanged=false;8. privatestringappVersion="1.0"9. CategoryAttribute("文档设置"),10. DefaultValueAttribute(true)11. publicboolSaveOnClose12. 13. getreturnsaveOnClose;14. setsaveOnClose=value;15
15、. 16. CategoryAttribute("全局设置"),17. ReadOnlyAttribute(true),18. DefaultValueAttribute("欢迎使用应用程序!")19. publicstringGreetingText20. 21. getreturngreetingText;22. setgreetingText=value;23. 24. CategoryAttribute("全局设置"),25. DefaultValueAttribute(4)26. publicintItemsInMRULis
16、t27. 28. getreturnitemsInMRU;29. setitemsInMRU=value;30. 31. DescriptionAttribute("以毫秒表示的文本重复率。"),32. CategoryAttribute("全局设置"),33. DefaultValueAttribute(10)34. publicintMaxRepeatRate35. 36. getreturnmaxRepeatRate;37. setmaxRepeatRate=value;38. 39. BrowsableAttribute(false),40. D
17、efaultValueAttribute(false)41. publicboolSettingsChanged42. 43. getreturnsettingsChanged;44. setsettingsChanged=value;45. 46. CategoryAttribute("版本”工47. DefaultValueAttribute("1.0"),48. ReadOnlyAttribute(true)49. publicstringAppVersion50. 51. getreturnappVersion;52. setappVersion=valu
18、e;53. 54. 将这些特性应用于AppSettings类后,编译并运行该应用程序。下面的屏幕快照显示了应用程序的外观。图3:PropertyGrid中显示的带有类别和默认值的属性使用此版本的选项窗口后,您会注意到以下几点:显示窗口时,将首先突出显示SaveOnClose属性。 选中MaxRepeatRate属性时,说明帮助窗格中将显示以毫秒表示的文本重复率 SaveOnClose属性显示在文档设置”类别下。其他属性分别显示在全局设置”和版本”类别下。 SettingsChanged属性将不再显示。 AppVersion属性为只读。只读属性以灰显文本显示。 如果SaveOnClose属性包含
19、的值不是true,该值将以粗体显示。PropertyGrid使用粗体文本表示包含非默认值的属性。显示复杂属性到现在为止,选项窗口显示的都是简单的类型,如整数、布尔值和字符串。那么,如何显示更复杂的类型呢?如果应用程序需要跟踪窗口大小、文档字体或工具栏颜色等信息,该如何处理呢?.NET框架提供的某些数据类型具有特殊的显示功能,能使这些类型在PropertyGrid中更具可用性。对所提供类型的支持首先,请更新AppSettingS类,为窗口大小(Size类型)、窗口字体(Font类型)和工具栏颜色(Color类型)添加新属性。1. DefaultPropertyAttribute("Sa
20、veOnClose")2. publicclassAppSettings3. privateboolsaveOnClose=true;4. privatestringgreetingText="欢迎使用应用程序!"5. privateintmaxRepeatRate=10;6. privateintitemsInMRU=4;7. privateboolsettingsChanged=false;8. privatestringappVersion="1.0"9. privateSizewindowSize=newSize(100,100);10
21、. privateFontwindowFont=newFont("宋体",9,FontStyle.Regular);11. privateColortoolbarColor=SystemColors.Control;12. CategoryAttribute("文档设置"),13. DefaultValueAttribute(true)14. publicboolSaveOnClose15. 16. getreturnsaveOnClose;17. setsaveOnClose=value;18. 19. CategoryAttribute("
22、文档设置")20. publicSizeWindowSize21. 22. getreturnwindowSize;23. setwindowSize=value;24. 25. CategoryAttribute("文档设置")26. publicFontWindowFont27. 28. getreturnwindowFont;29. setwindowFont=value;30. 31. CategoryAttribute("全局设置")32. publicColorToolbarColor33. 34. getreturntoolbar
23、Color;35. settoolbarColor=value;36. 37. CategoryAttribute("全局设置"),38. ReadOnlyAttribute(true),39. DefaultValueAttribute("欢迎使用应用程序!")40. publicstringGreetingText41. 42. getreturngreetingText;43. setgreetingText=value;44. 45. CategoryAttribute("全局设置"),46. DefaultValueAttr
24、ibute(4)47. publicintItemsInMRUList48. 49. getreturnitemsInMRU;50. setitemsInMRU=value;51. 52. DescriptionAttribute("以毫秒表示的文本重复率。”工53. CategoryAttribute("全局设置"),54. DefaultValueAttribute(10)55. publicintMaxRepeatRate56. 57. getreturnmaxRepeatRate;58. setmaxRepeatRate=value;59. 60. Bro
25、wsableAttribute(false),61. DefaultValueAttribute(false)62. publicboolSettingsChanged63. 64. getreturnsettingsChanged;65. setsettingsChanged=value;66. 67. CategoryAttribute("版本”工68. DefaultValueAttribute("1.0"),69. ReadOnlyAttribute(true)70. publicstringAppVersion71. 72. getreturnappVe
26、rsion;73. setappVersion=value;74. 75. 下面的屏幕快照显示了新属性在PropertyGrid中的外观。图4:显示在PropertyGrid中的.NET框架数据类型请注意,WindowFont属性带有一个省略号(.)按钮,按下该按钮将显示字体选择对话框。此外,还可以展开该属性以显示更多的Font属性。某些Font属性提供有关字体的值和详细信息的下拉列表。您可以展开WindowSize属性以显示Size类型的更多属性。最后,请注意,ToolbarColor属性包含一个选定颜色的样本,以及一个用于选择不同颜色的自定义下拉列表。对于这些以及其他数据类型,.NET框架
27、提供了其他的类,可以使在PropertyGrid中的编辑更加容易。对自定义类型的支持现在,您需要在AppSettings类中添加另外两个属性,即DefaultFileName和SpellCheckOptions。DefaultFileName属性用于获取或设置字符串;SpellCheckOptions属性用于获取或设置SpellingOptions类的实例。SpellingOptions类是一个新类,用于管理应用程序的拼写检查属性。对于何时创建单独的类以管理对象的属性,并没有严格的规定,而取决于您的整个类设计。将SpellingOptions类定义添加到应用程序项目中-可以添加到新文件中,也可
28、以添加到窗体源代码的下方。1. DescriptionAttribute("展开以查看应用程序的拼写选项。")2. publicclassSpellingOptions3. privateboolspellCheckWhileTyping=true;4. privateboolspellCheckCAPS=false;5. privateboolsuggestCorrections=true;6. DefaultValueAttribute(true)7. publicboolSpellCheckWhileTyping8. 9. getreturnspellCheckWhi
29、leTyping;10. setspellCheckWhileTyping=value;11. 12. DefaultValueAttribute(false)13. publicboolSpellCheckCAPS14. 15. getreturnspellCheckCAPS;16. setspellCheckCAPS=value;17. 18. DefaultValueAttribute(true)19. publicboolSuggestCorrections20. 21. getreturnsuggestCorrections;22. setsuggestCorrections=val
30、ue;23. 24. 再次编译并运行选项窗口应用程序。下面的屏幕快照显示了应用程序的外观。图5:在PropertyGrid中显示的不带类型转换器的自定义数据类型请注意SpellcheckOptions属性的外观。与.net框架类型不同,它不展开或显示自定义的字符串表示。如果要在自己的复杂类型中提供与.NET框架类型相同的编辑体验,该如何处理呢?.NET框架类型使用TypeConverter和UITypeEditor类提供大部分PropertyGrid编辑支持,您也可以使用这些类。添加可展开属性支持要使PropertyGrid能够展开SpellingOptions属性,您需要创建TypeConv
31、erter。TypeConverter提供了从一种类型转换为另一种类型的方法。PropertyGrid使用TypeConverter将对象类型转换为String,并使用该String在网格中显示对象值。在编辑过程中,TypeConverter会将String转换回对象类型。.NET框架提供的ExpandableObjectConverter类可以简化这一过程。提供可展开对象支持1. 创建一个从ExpandableObjectConverter继承而来的类。1. publicclassSpellingOptionsConverter:ExpandableObjectConverter2. 2 .
32、如果destinationType参数与使用此类型转换器的类(示例中的SpellingOptions类)的类型相同,则覆盖CanConvertTo方法并返回true;否则返回基类CanConvertTo方法的值。1. publicoverrideboolCanConvertTo(ITypeDescriptorContextcontext,2. System.TypedestinationType)3. 4. if(destinationType=typeof(SpellingOptions)5. returntrue;6. returnbase.CanConvertTo(context,des
33、tinationType);7. 3 .覆盖ConvertTo方法,并确保destinationType参数是一个String,并且值的类型与使用此类型转换器的类(示例中的SpellingOptions类)相同。如果其中任一情况为false,都将返回基类ConvertTo方法的值;否则,返回值对象的字符串表示。字符串表示需要使用唯一分隔符将类的每个属性隔开。由于整个字符串都将显示在PropertyGrid中,因此需要选择一个不会影响可读性的分隔符,逗号的效果通常比较好。1. publicoverrideobjectConvertTo(ITypeDescriptorContextcontext,
34、CultureInfoculture,2. objectvalue,System.TypedestinationType)3. 4. if(destinationType=typeof(System.String)&&5. valueisSpellingOptions)6. SpellingOptionsso=(SpellingOptions)value;7. return"在键入时检查:"+so.SpellCheckWhileTyping+8. ”,检查大小写:"+so.Spe11checkCAPS+9. ”,建议更正:"+so.Sug
35、gestCorrections;10. 11. returnbase.ConvertTo(context,culture,value,destinationType);12. 4 .(可选)通过指定类型转换器可以从字符串进行转换,您可以启用网格中对象字符串表示的编辑。要执行此操作,首先需要覆盖CanConvertFrom方法并返回true(如果源Type参数为String类型);否则,返回基类CanConvertFrom方法的值。1. publicoverrideboolCanConvertFrom(ITypeDescriptorContextcontext,System.Typesource
36、Type)2. 3. if(sourceType=typeof(string)4. returntrue;5. returnbase.CanConvertFrom(context,sourceType);6. 5 .要启用对象基类的编辑,同样需要覆盖ConvertFrom方法并确保值参数是一个String。如果不是String,将返回基类ConvertFrom方法的值;否则,返回基于值参数的类(示例中的SpellingOptionS类)的新实例。您需要根据值参数解析类的每个属性的值。了解在ConvertTo方法中创建的分隔字符串的格式将有助于您的解析。1. publicoverrideobje
37、ctConvertFrom(ITypeDescriptorContextcontext,CultureInfoculture,objectvalue)2. 3. if(valueisstring)4. try5. strings=(string)value;6. intcolon=s.IndexOf(':');7. intcomma=s.IndexOf(',');8. if(colon!=-1&&comma!=-1)9. stringcheckWhileTyping=s.Substring(colon+1,(comma-colon-1);10.
38、colon=s.IndexOf(':',comma+1);11. comma=s.IndexOf(',',comma+1);12. stringcheckCaps=s.Substring(colon+1,(comma-colon-1);13. colon=s.IndexOf(':',comma+1);14. stringsuggCorr=s.Substring(colon+1);15. SpellingOptionsso=newSpellingOptions();16. so.SpellCheckWhileTyping=Boolean.Parse
39、(checkWhileTyping);17. so.SpellCheckCAPS=Boolean.Parse(checkCaps);18. so.SuggestCorrections=Boolean.Parse(suggCorr);19. returnso;20. 21. 22. catch23. thrownewArgumentException(24. "无法将“"+(string)value+25. ”"转换为SpellingOptions类型");26. 27. 28. returnbase.ConvertFrom(context,culture
40、,value);29. 6 .现在已经有了一个类型转换器类,下面您需要确定使用该类的目标类。您可以通过将TypeConverterAttribute应用到目标类(示例中的SpellingOptions类)来执行此操作。1. /应用于SpellingOptions类的TypeConverter特性。2. TypeConverterAttribute(typeof(SpellingOptionsConverter),3. DescriptionAttribute(展开以查看应用程序的拼写选项。")4. publicclassSpellingOptions.再次编译并运行选项窗口应用程序。
41、下面的屏幕快照显示了选项窗口目前的外观。图6:在PropertyGrid中显示的带有类型转换器的自定义数据类型注意:如果只需要可展开对象支持,而不需要自定义字符串表示,则只需将TypeConverterAttribute应用到类中。将ExpandableObjectConverter指定为类型转换器类型。添加域列表和简单的下拉列表属性支持对于基于Enum类型返回枚举的属性,PropertyGrid会自动在下拉列表中显示枚举值。EnumConverter也提供了这一功能。对于自己的属性,您可能希望为用户提供一个有效值列表(有时也称为选取列表或域列表),而其类型并不是基于Enumo如果域值在运行时
42、之前未知,或者值可以更改,则属于这种情况。修改选项窗口,提供一个用户可从中选择的默认文件名的域列表。您已经将DefaultFileName属性添加到AppSettingS类。下一步是在PropertyGrid中显示属性的下拉列表,以提供域列表。提供简单的下拉列表属性支持1 .创建一个从类型转换器类继承而来的类。由于DefaultFileName属性属于String类型,因此可以从StringConverter中继承。如果属性类型的类型转换器不存在,则可以从TypeConverter继承;这里并不需要。1. publicclassFileNameConverter:StringConverter
43、2. 覆盖GetStandardValuesSupported方法并返回true,表示此对象支持可以从列表中选取的一组标准值。1. publicoverrideboolGetStandardValuesSupported(ITypeDescriptorContextcontext)2. 3. returntrue;4. 3. 覆盖GetStandardValues方法并返回填充了标准值的StandardValuesCollection。创建StandardValuesCollection的方法之一是在构造函数中提供一个值数组。对于选项窗口应用程序,您可以使用填充了建议的默认文件名的String
44、数组。1. publicoverrideStandardValuesCollectionGetStandardValues(ITypeDescriptorContextcontext)2.3. returnnewStandardValuesCollection(newstring"新文件","文件1","文档1");4. 4.(可选)如果希望用户能够键入下拉列表中没有包含的值,请覆盖GetStandardValuesExclusive方法并返回falseo这从根本上将下拉列表样式变成了组合框样式。1. publicoverridebo
45、olGetStandardValuesExclusive(ITypeDescriptorContextcontext)2. 3. returnfalse;4. 5.拥有自己的用于显示下拉列表的类型转换器类后,您需要确定使用该类的目标。在本示例中,目标为DefaultFileName属性,因为类型转换器是针对该属性的。将TypeConverterAttribute应用到目标属性中。1. /应用到DefaultFileName属性的TypeConverter特性。2. TypeConverter(typeof(FileNameConverter),3. CategoryAttribute(&quo
46、t;文档设置")4. publicstringDefaultFileName5. 6. getreturndefaultFileName;7. setdefaultFileName=value;8. 再次编译并运行选项窗口应用程序。下面的屏幕快照显示了选项窗口目前的外观。请注意DefaultFileName属性的外观。图7:在PropertyGrid中显示下拉域列表为属性提供自定义UI如上所述,.NET框架类型使用TypeConverter和UITypeEditor类(以及其他类)来提供PropertyGrid编辑支持。有关如何使用TypeConverter,请参阅对自定义类型的支持
47、一节;您也可以使用UITypeEditor类来自定义PropertyGrid。您可以在PropertyGrid中提供小图形表示和属性值,类似于为Image和Color类提供的内容。要在自定义中执行此操作,请从UITypeEditor继承,覆盖GetPaintValueSupported并返回true然后,覆盖UITypeEditor.PaintValue方法,并在自己的方法中使用PaintValueEventArgs.Graphics参数绘制图形。最后,将Editor特性应用到使用UITypeEditor类的类或属性。下面的屏幕快照显示了结果外观。图 8 :在 PropertyGrid中显示属
48、性的自定义图形您也可以提供自己的下拉列表控件,行此操作,请从 UITypeEditor枚举值,例如DropDown这与 Control.Dock继承,覆盖 GetEditStyle您的自定义下拉列表控件必须从属性用来为用户提供靠接选择的控件类似。,然后返回一个 UITypeEditorEditStyle要执UserControl )继承而来。然后,覆盖 UITypeEditor.EditValue 参数调用 IServiceProvider.GetService方法,以获取一个实例。最后,调用 IWindowsFormsEditorService.DropDownControl 拉列表控件。请
49、记住将 Editor特性应用到使用UITypeEditorControl 或 Control方法。使用的派生类(例如IServiceProviderIWindowsFormsEditorService方法来显示您的自定义下 类的类或属性中。F面的屏幕快照显示了结果外观。图9:在PropertyGrid中显示属性的自定义下拉列表控件除了使用TypeEditor和UITypeEditor类外,还可以自定义PropertyGrid以显示其他属性选项卡。属性选项卡从PropertyTab类继承而来。如果您使用过MicrosoftVisualC#?.NET中的属性浏览器,那么就可能看到过自定义的Prop
50、ertyTab。Events选项卡(带有闪电图形的按钮)就是一个自定义的PropertyTab。下面的屏幕快照显示了自定义PropertyTab的另一个示例。可以使用PropertyTab编辑按钮的边界点,以创建自定义的按钮形状。图10:在PropertyGrid中显示自定义选项卡如果想在item中增加自定义的显示方式,比如日期选择啦、下拉框啦、甚至文件选择、拾色器等等,我们可以参考如下:改变PropertyGrid控件的编辑风格(1)加入日期控件编辑日期类型数据1. usingSystem;2. 3. /<summary>4. /在PropertyGrid上显示日期控件5. /&
51、lt;/summary>6. publicclassPropertyGridDateItem:UITypeEditor7. 8. MonthCalendardateControl=newMonthCalendar();9. publicPropertyGridDateItem。10. 11. dateControl.MaxSelectionCount=1;12. 13. 14. returnUITypeEditorEditStyle.DropDown;15. 16. System.IServiceProviderprovider,objectvalue)17. 18. try19. 20
52、. IWindowsFormsEditorServiceedSvc=21. (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService);22. if(edSvc!=null)23. 24. if(valueisstring)25. 26. dateControl.SelectionStart=DateTime.Parse(valueasString);27. edSvc.DropDownControl(dateControl);28. 29. elseif(valueisDateTime)
53、30. 31. dateControl.SelectionStart=(DateTime)value;32. edSvc.DropDownControl(dateControl);33. returndateControl.SelectionStart;34. 35. 36. 37. catch(Exceptionex)38. 39. returnvalue;40. 41. returnvalue;42.43.44.步骤二:编辑属性类,指定编辑属性。示例如下:1. 2. publicclassSomeProperties3. 4. privatestring_finished_time=&qu
54、ot;"5. /6. Description。'完成时间"),Category。'属性)EditorAttribute(typeof(PropertyGridDateItem),7. publicString完成时间8. 9. getreturn_finished_date;10. set_finished_date=value;11. 12. /13. 14. 步骤三:设置PropertyGrid的属性对象。示例如下:1. privatevoidForm1_Load(objectsender,System.EventArgse)2. 3. 改变Proper
55、tyGrid控件的编辑风格(2)编辑多行文本效果:适用场合:1、编辑多行文本;2、编辑长文本。步骤一:定义从UITypeEditor派生的类,示例如下:1. usingSystem;2. 3. /<summary>4. /PropertyGridMutiText的摘要说明。5. /</summary>6. publicclassPropertyGridRichText:UITypeEditor7. 8. 9. returnUITypeEditorEditStyle.DropDown;10. 11. 12. try13. 14. IWindowsFormsEditorServiceedSvc=15. (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService);16. if(edSvc!=null)17. 18. if(valueisstring)19. 20. RichTextBoxbox=newRichTextBox();21. box.Text=valueasstring;22. edSvc.DropDownControl(box);23. returnbox.Text;24. 25. 26. 2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度二手住宅自助买卖合同
- 橱柜企业生产设备融资租赁二零一四年合同
- 二零二四年度二手房买卖定金给付合同
- 2024年度电梯故障预警与维修服务合同
- 二零二四年度昌平区企业扶持与发展合同
- 船用设备及配件买卖合同(04版)
- 二零二四年度科技成果转化合同
- 2024电商与快递企业合作共赢框架协议3篇
- 二零二四年度知识产权保护合同(标的知识产权保护)
- 医院廉洁购销合同
- 2023年5G+PLC深度融合解决方案白皮书-施耐德电气中国信通院中国联通
- 微生物限度检查操作规程中国药典四部通则
- 讲座:新财富趋势
- 重大事故隐患重点事项排查清单1
- 《税法》 课件 2第三节 增值税出口退税
- 2024年河北交通职业技术学院单招职业倾向性测试题库附答案
- 常见病与多发病防治计划措施
- 2023-2024年中考语文三年真题分类汇编(全国版)作文 试卷(含答案解析)
- 台球厅运营方案策划(2篇)
- 营养专科护士进修汇报
- 我为南京带货英语作文
评论
0/150
提交评论