CProperyGri所有用法_第1頁
CProperyGri所有用法_第2頁
CProperyGri所有用法_第3頁
CProperyGri所有用法_第4頁
CProperyGri所有用法_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、如果您使用過覽器來瀏覽、屬性瀏覽器的核心。P ro pertyGrid控件顯示對(duì)象或類型的屬性,并主要通過使用反射來檢索項(xiàng)目的屬性。(反射是在運(yùn)行時(shí)提供類型信息的技術(shù)。)或查看和編輯一個(gè)或多個(gè)對(duì)象的屬性。Microsoft? Visual Basic?Microsoft Visual Studio .NET.NET 框架 PropertyGrid,那么您一定使用過屬性瀏控件是 Visual Studio .NETF面的屏幕快照顯示了Prop ertyGrid在窗體上的外觀。圖1 :窗體上的Prop ertyGridProp ertyGrid包含以下部分:屬性可展開屬性 屬性類別標(biāo)題 屬性說明屬

2、性編輯器屬性選項(xiàng)卡命令窗格(顯示控件設(shè)計(jì)器提供的設(shè)計(jì)器操作)創(chuàng)建 PropertyGrid控件要使用 Visual Studio .NET 創(chuàng)建PropertyGrid控件,需要將該控件添加到工具箱中,因?yàn)槟J(rèn)情況下并不包含該控件。在Tools(工具)菜單中,選擇 Customize Toolbox話框中選擇 Framework Components(框架組件)選項(xiàng)卡,然后選擇(自定義工具箱)。在對(duì)Prop ertyGrid。如果您從命令行編譯代碼,請(qǐng)使用/refere nee以下代碼顯示了如何創(chuàng)建Prop ertyGrid控件并將其添加到窗體中。1.2.3.using System;usin

3、g System.Drawing;using System.Co mpo nentModel;.8.9.10.using System.Globalization;p ublic Op tionsDialog()Op tions Prop ertyGrid = new Prop ertyGrid();Op tions Prop ertyGrid.Size = new Size(300, 250); this.Text =選項(xiàng)對(duì)話框;11.12.13.STAThread static void Main()14.15.App lication.Run(new Op tionsDia

4、log();16.17.何處使用 Prop ertyGrid 控件在應(yīng)用程序中的很多地方,您都可以使用戶與Prop ertyGrid進(jìn)行交互,從而獲得更豐富的編輯體驗(yàn)。例如,某個(gè)應(yīng)用程序包含多個(gè)用戶可以設(shè)置的設(shè)置”或選項(xiàng),其中一些可能十分復(fù)雜。您可以使用單選按鈕、組合框或文本框來表示這些選項(xiàng)。但本文將逐步介紹如何使用Prop ertyGrid控件創(chuàng)建選項(xiàng)窗口來設(shè)置應(yīng)用程序選項(xiàng)。上面所創(chuàng)建的Op tio nsDialog 窗體即是選項(xiàng)窗口的開始?,F(xiàn)在,我們創(chuàng)建一個(gè)名為App Sett in gs 的類,其中包含映射到應(yīng)用程序設(shè)置的所有屬性。如果創(chuàng)建單獨(dú)的類而不使用多個(gè)分散的變量,設(shè)置將更便于管理

5、和維護(hù)。1.2.p ublic class App Settingsp rivate bool saveOnClose = true;3.p rivate string greetingText =歡迎使用應(yīng)用程序!-4.private int itemsInMRU = 4;5.p rivate int maxRe peatRate = 10;6.p rivate bool settingsChanged = false;7.8.p rivate string app Version = 1.0;p ublic bool SaveOnClose9.10.get return saveOnClo

6、se; 11.set saveOnClose = value;12.13.p ublic string GreetingText14.15.get return greetingText; 16.set greetingText = value; 17.18.19.p ublic int MaxRe peatRate20.get return maxRe peatRate; 21.set maxRe peatRate = value; 22.23.public int ItemsInMRUList24.25.get return itemsInMRU; 26.set itemsInMRU =

7、value; 27.28.29.p ublic bool SettingsChanged30.get return settingsChanged; 31.set settingsChanged = value; 33.p ublic string App Version35.get return app Version; 36.set app Version = value; 38. 在添加時(shí)可創(chuàng)建新文選項(xiàng)窗口上的 Prop ertyGrid 將使用此類,因此請(qǐng)將類定義添加到應(yīng)用程序項(xiàng)目中, 件或?qū)⑵涮砑拥浆F(xiàn)有窗體源代碼的下方。選擇對(duì)象要標(biāo)識(shí) PropertyGrid顯示的內(nèi)容,請(qǐng)將 Pro

8、pertyGrid.SelectedObject然后,P ro pertyGrid將完成其余的工作。每次設(shè)置SelectedObject顯示的屬性。這提供了一種簡單的方法來強(qiáng)制刷新屬性,或在運(yùn)行時(shí)切換對(duì)象。您還可以調(diào)用方法來刷新屬性。屬性設(shè)置為一個(gè)對(duì)象實(shí)例。都會(huì)刷新時(shí),PropertyGridProp ertyGrid.Refresh接下來,您需要更新Op tio nsDialog 構(gòu)造函數(shù)中的代碼,以創(chuàng)建一個(gè)App Setti ngs 對(duì)象,置為并將其設(shè)Prop ertyGrid.SelectedObject屬性的值。1.2.P ublic Op tionsDialog().7

9、.Op tions Prop ertyGrid = new Prop ertyGrid();Op tions Prop ertyGrid.Size = new Size(300, 250);this.Text =選項(xiàng)對(duì)話框;/ 創(chuàng)建AppSettings 類并在PropertyGrid中顯示該類。App Settings app set = new App Settings();8.9.Op tions Prop ertyGrid.SelectedObject = app set; 編譯并運(yùn)行該應(yīng)用程序。下面的屏幕快照顯示了應(yīng)用程序的外觀。圖 2 : PropertyGrid中選定的 App

10、Setti ngs自定義 Prop ertyGrid控件您可以修改P ro pertyGrid不顯示某些屬性。那么,如何對(duì)的某些外觀特征以滿足自己的需要??梢愿哪承傩缘娘@示方式,Prop ertyGrid進(jìn)行自定義呢?甚至選擇更改 PropertyGrid的外觀特征Prop ertyGrid的許多外觀特征都可以自定義。下面列岀了其中的一部分:通過 Hel pBackColor 、Help ForeColor 和Hel pVisible屬性可以更改背景顏色、更改字體顏色或隱藏說明窗格。通過ToolbarVisible屬性可以隱藏工具欄,通過BackColor屬性可以更改工具欄的顏色,通過屬性

11、可以顯示大工具欄按鈕。LargeButtons 使用 PropertySort 通過 BackColor通過 LineColor屬性可以按字母順序?qū)傩赃M(jìn)行排序和分類。 屬性可以更改拆分器的顏色。屬性可以更改網(wǎng)格線和邊框。ToolbarVisible設(shè)置為false。其余屬性均保留默認(rèn)本示例中的選項(xiàng)窗口不需要工具欄,因此可以將 設(shè)置。更改屬性的顯示方式要更改某些屬性的顯示方式,您可以對(duì)這些屬性應(yīng)用不同的特性。特性是用于為類型、字段、方法和屬性等 編程元素添加批注的聲明標(biāo)記,在運(yùn)行時(shí)可以使用反射對(duì)其進(jìn)行檢索。下面列岀了其中的一部分:DescriptionAttribute-設(shè)置顯示在屬性下方說明

12、幫助窗格中的屬性文本。這是一種為活動(dòng)屬性(即具有焦點(diǎn)的屬性)提供幫助文本的有效方法。可以將此特性應(yīng)用于MaxRe peatRate屬性。CategoryAttribute-設(shè)置屬性在網(wǎng)格中所屬的類別。當(dāng)您需要將屬性按類別名稱分組時(shí),此特性非常有用。如果沒有為屬性指定類別,該屬性將被分配給 雜項(xiàng)類別??梢詫⒋颂匦詰?yīng)用于所有屬性。BrowsableAttribute-表示是否在網(wǎng)格中顯示屬性。此特性可用于在網(wǎng)格中隱藏屬性。默認(rèn)情況下,公共 屬性始終顯示在網(wǎng)格中??梢詫⒋颂匦詰?yīng)用于Sett in gsCha nged 屬性。ReadOnlyAttribute和set訪問函數(shù)的公共屬性在網(wǎng)格中是可以編

13、輯的??梢詫⒋颂匦詰?yīng)用于-表示屬性是否為只讀。此特性可用于禁止在網(wǎng)格中編輯屬性。默認(rèn)情況下,帶有g(shù)etAppVersion 屬性。DefaultValueAttribute-表示屬性的默認(rèn)值。如果希望為屬性提供默認(rèn)值,然后確定該屬性值是否與默認(rèn)值相同,則可使用此特性。可以將此特性應(yīng)用于所有屬性。Default Prop ertyAttribute-表示類的默認(rèn)屬性。在網(wǎng)格中選擇某個(gè)類時(shí),將首先突出顯示該類的默認(rèn)屬性??梢詫⒋颂匦詰?yīng)用于AppSettings 類。現(xiàn)在,我們將其中的一些特性應(yīng)用于App Setti ngs 類,以更改屬性在Prop ertyGrid中的顯示方式。1.2.Defau

14、lt Prop ertyAttribute(SaveOnClose) p ublic class App Settings3.P rivate bool saveOnClose = true;4.5.p rivate string greetingText =p rivate int maxRe peatRate = 10;歡迎使用應(yīng)用程序!-.7.private int itemsInMRU = 4;p rivate bool settingsChanged = false;8.9.p rivate string app Version = 1.0;文檔

15、設(shè)置),CategoryAttribute(10.DefaultValueAttribute(true)11.12.p ublic bool SaveOnClose13.get return saveOnClose; 14.15.set saveOnClose = value;16.CategoryAttribute(全局設(shè)置),17.ReadOnlyAttribute(true),歡迎使用應(yīng)用程序!)DefaultValueAttribute( P ublic string GreetingText get return greetingText; set greetingText = va

16、lue; 24.CategoryAttributeC全局設(shè)置),25.DefaultValueAttribute(4)26.public int ItemsInMRUList27.28.get return itemsInMRU; 29.set itemsInMRU = value; 3.Descri ptionAttribute(”CategoryAttribute(全局設(shè)置),DefaultValueAttribute(10)以毫秒表示的文本重復(fù)率。),34.p ublic int MaxRe peatRate35.36.get return maxRe peatRat

17、e; 37.set maxRe peatRate = value; 38.39.BrowsableAttribute(false),40.DefaultValueAttribute(false)41.p ublic bool SettingsChanged42.43.get return settingsChanged; 44.set settingsChanged = value; 45.46.CategoryAttribute(版本),47.DefaultValueAttribute(1.0),48.ReadOnlyAttribute(true)49.50.P ublic string A

18、pp Version51.get return app Version; 52.set app Version = value; 53.54.將這些特性應(yīng)用于 AppSettings 類后,編譯并運(yùn)行該應(yīng)用程序。 下面的屏幕快照顯示了應(yīng)用程序的外觀。圖 3 : PropertyGrid中顯示的帶有類別和默認(rèn)值的屬性使用此版本的選項(xiàng)窗口后,您會(huì)注意到以下幾點(diǎn):顯示窗口時(shí),將首先突出顯示Save On Close屬性。選中MaxRepeatRate屬性時(shí),說明幫助窗格中將顯示以毫秒表示的文本重復(fù)率版本”類別下。Save On Close屬性顯示在 文檔設(shè)置”類別下。其他屬性分別顯示在全局設(shè)置”和S

19、ett in gsCha nged 屬性將不再顯示。AppVersion屬性為只讀。只讀屬性以灰顯文本顯示。使用粗體文本表示包如果Save On Close屬性包含的值不是true ,該值將以粗體顯示。P ro pertyGrid 含非默認(rèn)值的屬性。顯示復(fù)雜屬性到現(xiàn)在為止,選項(xiàng)窗口顯示的都是簡單的類型,如整數(shù)、布爾值和字符串。那么,如果應(yīng)用程序需要跟蹤窗口大小、文檔字體或工具欄顏色等信息,該如何處理呢? 據(jù)類型具有特殊的顯示功能,能使這些類型在Prop ertyGrid中更具可用性。如何顯示更復(fù)雜的類型呢?.NET框架提供的某些數(shù)對(duì)所提供類型的支持首先,類型)請(qǐng)更新 App Sett in g

20、s 類,為窗口大小(Size類型)、窗口字體(Font 添加新屬性。類型)和工具欄顏色(Color1.Default Prop ertyAttribute(SaveOnClose)2.3.p ublic class App Settingsp rivate bool saveOnClose = true;4.p rivate string greetingText =歡迎使用應(yīng)用程序!5.p rivate int maxRe peatRate = 10;6.7.private int itemsInMRU = 4;p rivate bool settingsChanged = false;8.

21、p rivate string app Version = 1.0;9.10.private Size windowSize = new Size(100,100);p rivate Font windowFont = new Font(宋體,9, FontStyle.Regular);11.12.p rivate Color toolbarColor = SystemColors.Control;文檔設(shè)置13.CategoryAttribute(DefaultValueAttribute(true),14.p ublic bool SaveOnClose30.30.31.CategoryAt

22、tribute(全局設(shè)置)7.get return saveOnClose; set saveOnClose = value;18.19.20.CategoryAttribute( P ublic Size WindowSize文檔設(shè)置)22.21.23.get return windowSize; set windowSize = value;24.25.CategoryAttribute(文檔設(shè)置)26.27.p ublic Font WindowFont28.get return windowFont; set windowFont = value;32.p ubli

23、c Color ToolbarColor34.get return toolbarColor; 35.set toolbarcolor = value; 7.CategoryAttribute(全局設(shè)置),38.ReadOnlyAttribute(true),39.40.DefaultValueAttribute( p ublic string GreetingText歡迎使用應(yīng)用程序!)41.42.get return greetingText; 43.44.set greetingText = value; 45.CategoryAttribute(全局設(shè)置),46.4

24、7.DefaultValueAttribute(4) public int ItemsInMRUList48.49.50.get return itemsInMRU; set itemsInMRU = value; 51.52.Descri ptionAttribute(以毫秒表示的文本重復(fù)率。),53.CategoryAttribute(全局設(shè)置),54.55.DefaultValueAttribute(10)p ublic int MaxRe peatRate56.57.58.get return maxRe peatRate; set maxRe peatRate = value; 59

25、.60.61.BrowsableAttribute(false),DefaultValueAttribute(false)62.p ublic bool SettingsChanged63.64.65.get return settingsChanged; set settingsChanged = value; 66.67.CategoryAttribute(版本),68.DefaultValueAttribute(1.0),69.ReadOnlyAttribute(true)70.71.p ublic string App Version72.get return app Version;

26、 73.set app Version = value; F面的屏幕快照顯示了新屬性在Prop ertyGrid中的外觀。圖 4 :顯示在 PropertyGrid中的.NET 框架數(shù)據(jù)類型請(qǐng)注意,WindowFont屬性帶有一個(gè)省略號(hào)(.)按鈕,按下該按鈕將顯示字體選擇對(duì)話框。此外,還可以展開該屬性以顯示更多的Font 屬性。某些Font 屬性提供有關(guān)字體的值和詳細(xì)信息的下拉列表。您可以展開WindowSize屬性以顯示 Size 類型的更多屬性。最后,請(qǐng)注意,ToolbarColor 屬性包含一個(gè) 選定顏色的樣本,以及一個(gè)用于選擇不同顏色的自定義下拉列表。對(duì)于這些以及其他數(shù)據(jù)類型,.NET

27、框架提供了其他的類,可以使在Prop ertyGrid中的編輯更加容易。對(duì)自定義類型的支持現(xiàn)在,您需要在 App Setti ngs 類中添加另外兩個(gè)屬性,即DefaultFileName 和Sp ellCheck Op tio ns 。DefaultFileName 屬性用于獲取或設(shè)置字符串;Sp ellCheckO ptio ns 屬性用于獲取或設(shè)置Sp elli ngOp tio ns類的實(shí)例。Sp elli ngOp tio ns類是一個(gè)新類,用于管理應(yīng)用程序的拼寫檢查屬性。對(duì)于何時(shí)創(chuàng)建單獨(dú)的類以管理對(duì)象的屬性,并沒有嚴(yán)格的規(guī)定,而取決于您的整個(gè)類設(shè)計(jì)。將Sp elli ngOp ti

28、o ns類定義添加到應(yīng)用程序項(xiàng)目中-可以添加到新文件中,也可以添加到窗體源代碼的下方。.5.6.Descri ptionAttribute(”p ublic class Sp elling Op tionsp rivate bool sp ellCheckWhileT yping = true; private bool sp ellCheckCA PS = false;p rivate bool suggestCorrections = true; DefaultValueAttribute(true)展開以查看應(yīng)用程序的拼寫選項(xiàng)。)7.8.public bool Sp ell

29、CheckWhileTy ping9.10.11.get return sp ellCheckWhileT ypi ng; set sp ellCheckWhileT yping = value; 12.13.DefaultValueAttributefalse) public bool Sp ellCheckCA PS14.15.16.get return sp ellCheckCA PS; set sp ellCheckCA PS = value; 0.21.p ublic bool SuggestCorrectionsget return suggestCorrect

30、ions; DefaultValueAttribute(true)22.23.set suggestCorrections = value; 24.再次編譯并運(yùn)行選項(xiàng)窗口應(yīng)用程序。下面的屏幕快照顯示了應(yīng)用程序的外觀。圖 5 :在 PropertyGrid中顯示的不帶類型轉(zhuǎn)換器的自定義數(shù)據(jù)類型請(qǐng)注意SpellcheckOptions屬性的外觀。與示。如果要在自己的復(fù)雜類型中提供與.NET用 TypeConverter 和 UITypeEditor 類。.NET 框架類型不同,它不展開或顯示自定義的字符串表 框架類型相同的編輯體驗(yàn),該如何處理呢? .NET框架類型使類提供大部分 Prop erty

31、Grid編輯支持,您也可以使用這些添加可展開屬性支持要使 PropertyGrid TypeCon verter 將對(duì)象類型轉(zhuǎn)換為 會(huì)將String 程。屬性,您需要?jiǎng)?chuàng)建Typ eCo nverter。使用 TypeConverter TypeCon verter 類可以簡化這一過能夠展開 SpellingOptions提供了從一種類型轉(zhuǎn)換為另一種類型的方法。P ro pertyGridStri ng,并使用該Stri ng在網(wǎng)格中顯示對(duì)象值。在編輯過程中,轉(zhuǎn)換回對(duì)象類型。.NET 框架提供的 ExpandableObjectConverter提供可展開對(duì)象支持1.創(chuàng)建一個(gè)從 Exp anda

32、bleObjectConverter繼承而來的類。2.1.P ublic class Sp elling Op tionsConverter:Ex pandableObjectConverter2. 如果destinationType參數(shù)與使用此類型轉(zhuǎn)換器的類(示例中的SpellingOptions類)的類型相同,則覆蓋CanConvertTo方法并返回true ;否則返回基類 CanConvertTo方法的值。1.2.p ublic override bool CanConvertTo(IT yp eDescri ptorContext context,System.T ype destin

33、ationT ype).5.6.7.if (destinationT ype = typ eof(S pelling Op tions) return true;return base.CanConvertTo(context, destinationT yp e); 覆蓋ConvertTo 方法,并確保destinationType 參數(shù)是一個(gè)String ,并且值的類型與使用此類型 轉(zhuǎn)換器的類(示例中的Sp elli ngOp tio ns類)相同。如果其中任一情況為 false,都將返回基類ConvertTo 方法的值;否則,返回值對(duì)象的字符串表示。字符串表示需要使用唯一分

34、隔符將類的每個(gè)屬性隔 開。由于整個(gè)字符串都將顯示在Prop ertyGrid中,因此需要選擇一個(gè)不會(huì)影響可讀性的分隔符,逗號(hào)的效果通常比較好。..9.10.11.J12.(可選)p ublic override object ConvertTo(IT yp eDescri ptorContext context, CultureInfo culture,object value, System.T ype destinationT ype)if (destinationT ype = typ eof(System.String) &value is Sp ellin

35、g Op tions)Sp elling Op tions so = (Sp elling Op tions)value;return 在鍵入時(shí)檢查:+ so.SpellCheckWhileTyping +,檢查大小寫:+ so.SpellCheckCAPS +,建議更正 :+ so.SuggestCorrections;return base.ConvertTo(context, culture, value, destinationT yp e);通過指定類型轉(zhuǎn)換器可以從字符串進(jìn)行轉(zhuǎn)換,您可以啟用網(wǎng)格中對(duì)象字符串表示的編輯。要執(zhí)行此操作,首先需要覆蓋 CanConvertFrom方法并返回

36、true (如果源Type 參數(shù)為String 類型);否則,返回基類CanConvertFrom方法的值。1.p ublic override bool CanConvertFrom(IT yp eDescri ptorContext context, System.T ypesourceT ype)2.3.if (sourceT ype = typ eof(string)4.return true;5.return base.CanConvertFrom(context, sourceT yp e);6.同樣需要覆蓋5.要啟用對(duì)象基類的編輯,String,將返回基類SpellingOpti

37、ons類)的新實(shí)例。ConvertFrom方法并確保值參數(shù)是一個(gè)String。如果不是方法的值;否則,返回基于值參數(shù)的類(示例中的您需要根據(jù)值參數(shù)解析類的每個(gè)屬性的值。了解在ConvertTo 方法ConvertFrom中創(chuàng)建的分隔字符串的格式將有助于您的解析。1.p ublic override object ConvertFrom(IT yp eDescri ptorContext context, CultureInfoculture, object value)2.3.if (value is string) 4.try 5.string s = (string) value;6.in

38、t colon = s.lndexOf(:);7.int comma = s.lndexOf(,);8.if (colon != -1 & comma != -1) 9.10.string checkWhileT yping = s.Substring(colon + 1 , (comma - colon - 1); colon = s.IndexOf(:, comma + 1);11.comma = s.IndexOf(, comma + 1);12.string checkCa ps = s.Substring(colon + 1 , (comma - colon -1);13.colon

39、 = s.IndexOf(:, comma + 1);14.string suggCorr = s.Substring(colon + 1);15.Sp elling Op tions so = new Sp elling Op tions();16.so.S pellCheckWhileT yp ing =Boolean .P arse(checkWhileT ypi ng);17.so.S pellCheckCA PS = Boolean. Parse(checkCa ps);18.so.SuggestCorrections = Boolean .P arse(suggCorr);19.r

40、eturn so;20.21.22.catch 6.throw new ArgumentExce ption( 無法將 “+ (string)value + 轉(zhuǎn)換為 SpellingOptions類型);28.27.return base.ConvertFrom(context, culture, value);29.6.現(xiàn)在已經(jīng)有了一個(gè)類型轉(zhuǎn)換器類,下面您需要確定使用該類的目標(biāo)類。您可以通過將Typ eConverterAttribute應(yīng)用到目標(biāo)類(示例中的Sp elli ngOp tio ns類)來執(zhí)行此操作。1./ 應(yīng)用于 SpellingOptions類的 Typ

41、eConverter特性。2.3.4.Typ eConverterAttribute(t yp eof(S pelling Op tionsConverter), Descri ptionAttribute(展開以查看應(yīng)用程序的拼寫選項(xiàng)。P ublic class Sp elling Op tions . )再次編譯并運(yùn)行選項(xiàng)窗口應(yīng)用程序。下面的屏幕快照顯示了選項(xiàng)窗口目前的外觀。圖 6 :在 PropertyGrid中顯示的帶有類型轉(zhuǎn)換器的自定義數(shù)據(jù)類型注意:如果只需要可展開對(duì)象支持,而不需要自定義字符串表示,則只需將 Typ eCo nverterAttribute應(yīng)用到類中。將 Ex pa

42、n dableObjectCo nverter指定為類型轉(zhuǎn)換器類型。添加域列表和簡單的下拉列表屬性支持對(duì)于基于 En um 類型返回枚舉的屬性,Prop ertyGridEn umCo nverter也提供了這一功能。對(duì)于自己的屬性,稱為選取列表或域列表),而其類型并不是基于En um則屬于這種情況。會(huì)自動(dòng)在下拉列表中顯示枚舉值。您可能希望為用戶提供一個(gè)有效值列表(有時(shí)也。如果域值在運(yùn)行時(shí)之前未知,或者值可以更改,修改選項(xiàng)窗口,提供一個(gè)用戶可從中選擇的默認(rèn)文件名的域列表。您已經(jīng)將DefaultFileName 屬性添加到App Sett in gs類。下一步是在Prop ertyGrid中顯示

43、屬性的下拉列表,以提供域列表。提供簡單的下拉列表屬性支持1.創(chuàng)建一個(gè)從類型轉(zhuǎn)換器類繼承而來的類。由于DefaultFileName屬性屬于String 類型,因此可以從中繼承。如果屬性類型的類型轉(zhuǎn)換器不存在,則可以從Typ eConverter繼承;這里StringConverter并不需要。2.1. p ublic class FileNameConverter: StringConverter 覆蓋GetStandardValuesSupported方法并返回true,表示此對(duì)象支持可以從列表中選取的一組標(biāo)準(zhǔn)值。1.P ublic override bool GetStandardValu

44、esS uppo rted(IT yp eDescri ptorContext context).return true;覆蓋 GetStandardValuesStandardValuesCollection以使用填充了建議的默認(rèn)文件名的方法并返回填充了標(biāo)準(zhǔn)值的StandardValuesCollection。創(chuàng)建的方法之一是在構(gòu)造函數(shù)中提供一個(gè)值數(shù)組。對(duì)于選項(xiàng)窗口應(yīng)用程序,您可String 數(shù)組。1.p ublic override StandardValuesCollection GetStandardValues(IT yp eDescri ptorContext4.2.

45、3.4.(可選)并返回context)return new StandardValuesCollection(new string如果希望用戶能夠鍵入下拉列表中沒有包含的值,請(qǐng)覆蓋 false 。這從根本上將下拉列表樣式變成了組合框樣式。新文件, 文件1, 文檔1);GetStandardValuesExclusive方法1.p ublic override bool GetStandardValuesExclusive(IT yp eDescri ptorContext context)2.3.return false;4.5.擁有自己的用于顯示下拉列表的類型轉(zhuǎn)換器類后,您需要確定使用該類的

46、目標(biāo)。在本示例中,目標(biāo)為屬性,因?yàn)轭愋娃D(zhuǎn)換器是針對(duì)該屬性的。將DefaultFileName屬性中。Typ eConverterAttribute應(yīng)用到目標(biāo)1.2.3./ 應(yīng)用到 DefaultFileName 屬性的 TypeConverterTyp eConverter(t yp eof(FileNameConverter),CategoryAttribute(文檔設(shè)置)特性。4.5.6.p ublic string DefaultFileNameget return defaultFileName; 7.8.set defaultFileName = value; 再次編譯并運(yùn)行選項(xiàng)窗口

47、應(yīng)用程序。下面的屏幕快照顯示了選項(xiàng)窗口目前的外觀。請(qǐng)注意DefaultFileName屬性的外觀。圖 7 :在 PropertyGrid中顯示下拉域列表為屬性提供自定義UI框架類型使用Typ eCo nverter編輯支持??梢允褂?UITyp eEditor如上所述,.NETProp ertyGrid和UITypeEditor類(以及其他類)來提供有關(guān)如何使用TypeConverter,請(qǐng)參閱 對(duì)自定義類型的支持一節(jié);您也類來自定義 Prop ertyGrid 。您可以在 Prop ertyGrid在自定義中執(zhí)行此操作,然后,覆蓋UITy peEditor. Pai ntValueGrap

48、hics參數(shù)繪制圖形。最后,將中提供小圖形表示和屬性值,類似于為請(qǐng)從 UITypeEditorImage 和Color類提供的內(nèi)容。要繼承,覆蓋 Get Pai ntValueSu pp orted并返回 true方法,并在自己的方法中使用Pai ntValueEve ntArgs.Editor特性應(yīng)用到使用UITy peEditor類的類或?qū)傩?。F面的屏幕快照顯示了結(jié)果外觀。圖 8 :在 PropertyGrid中顯示屬性的自定義圖形您也可以提供自己的下拉列表控件,這與Control.Dock屬性用來為用戶提供靠接選擇的控件類似。要執(zhí)行此操作,請(qǐng)從 UITypeEditor繼承,覆蓋 Get

49、EditStyle ,然后返回一個(gè) UITypeEditorEditStyle枚舉值,例如Drop Dow n。您的自定義下拉列表控件必須從Co ntrol 或Co ntrol的派生類(例如UserCo ntrol)繼承而來。然后,覆蓋UITy peEditor.EditValue方法。使用 IService Provider參數(shù)調(diào)用IService Provider.GetService方法,以獲取一個(gè)IWin dowsFormsEditorService方法來顯示您的自定義下 類的類或?qū)傩灾?。圖 9 :在 PropertyGrid中顯示屬性的自定義下拉列表控件實(shí)例。最后,調(diào)用 IWindowsFormsEditorService.DropDownControl 拉列表控件。請(qǐng)記住將 Editor 特性應(yīng)用到使用 UlTy peEditorF面的屏幕快照顯示了結(jié)果外觀。19.Prop ertyGrid以顯示其他屬性選項(xiàng)Microsoft Visual C#? .NET中的屬性瀏選項(xiàng)卡(帶有閃電圖形的按鈕)就是一個(gè)自 的另一個(gè)示例??梢允褂谩ve nts圖 10 :在 PropertyGrid中顯示自定義選項(xiàng)卡除了使用 TypeEditor 和UITypeEdit

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論