• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        充分運用 .NET 框架的 PropertyGrid 控件(微軟)之8

        充分運用 .NET 框架的 PropertyGrid 控件(微軟)之8

        更新時間:2022-04-26 文章作者:未知 信息來源:網絡 閱讀次數:

        添加域列表和簡單的下拉列表屬性支持
        對于基于 Enum 類型返回枚舉的屬性,PropertyGrid 會自動在下拉列表中顯示枚舉值。EnumConverter 也提供了這一功能。對于自己的屬性,您可能希望為用戶提供一個有效值列表(有時也稱為選取列表或域列表),而其類型并不是基于 Enum。如果域值在運行時之前未知,或者值可以更改,則屬于這種情況。

        修改選項窗口,提供一個用戶可從中選擇的默認文件名的域列表。您已經將 DefaultFileName 屬性添加到 AppSettings 類。下一步是在 PropertyGrid 中顯示屬性的下拉列表,以提供域列表。

        提供簡單的下拉列表屬性支持
        創建一個從類型轉換器類繼承而來的類。由于 DefaultFileName 屬性屬于 String 類型,因此可以從 StringConverter 中繼承。如果屬性類型的類型轉換器不存在,則可以從 TypeConverter 繼承;這里并不需要。
        ' Visual Basic

        Public Class FileNameConverter
        Inherits StringConverter
        End Class

        覆蓋 GetStandardValuesSupported 方法并返回 true,表示此對象支持可以從列表中選取的一組標準值。
        ' Visual Basic

        Public Overloads Overrides Function GetStandardValuesSupported( _
        ByVal context As ITypeDescriptorContext) As Boolean
        Return True
        End Function

        覆蓋 GetStandardValues 方法并返回填充了標準值的 StandardValuesCollection。創建 StandardValuesCollection 的方法之一是在構造函數中提供一個值數組。對于選項窗口應用程序,您可以使用填充了建議的默認文件名的 String 數組。
        ' Visual Basic

        Public Overloads Overrides Function GetStandardValues( _
         ByVal context As ITypeDescriptorContext) _
        As StandardValuesCollection

        Return New StandardValuesCollection(New String() {"新文件", _
        "文件1", _
        "文檔1"})
        End Function

        (可選)如果希望用戶能夠鍵入下拉列表中沒有包含的值,請覆蓋 GetStandardValuesExclusive 方法并返回 false。這從根本上將下拉列表樣式變成了組合框樣式。
        ' Visual Basic

        Public Overloads Overrides Function GetStandardValuesExclusive( _
         ByVal context As ITypeDescriptorContext) As Boolean
        Return False
        End Function

        擁有自己的用于顯示下拉列表的類型轉換器類后,您需要確定使用該類的目標。在本示例中,目標為 DefaultFileName 屬性,因為類型轉換器是針對該屬性的。將 TypeConverterAttribute 應用到目標屬性中。
        ' Visual Basic

        ' 應用到 DefaultFileName 屬性的 TypeConverter 特性。
        <TypeConverter(GetType(FileNameConverter)), _
        CategoryAttribute("文檔設置")> _
        Public Property DefaultFileName() As String
        Get
        Return _defaultFileName
        End Get
        Set(ByVal Value As String)
        _defaultFileName = Value
        End Set
        End Property

        再次編譯并運行選項窗口應用程序。下面的屏幕快照顯示了選項窗口目前的外觀。請注意 DefaultFileName 屬性的外觀。

        圖 7:在 PropertyGrid 中顯示下拉域列表

        為屬性提供自定義 UI
        如上所述,.NET 框架類型使用 TypeConverter 和 UITypeEditor 類(以及其他類)來提供 PropertyGrid 編輯支持。有關如何使用 TypeConverter,請參閱對自定義類型的支持一節;您也可以使用 UITypeEditor 類來自定義 PropertyGrid。

        您可以在 PropertyGrid 中提供小圖形表示和屬性值,類似于為 Image 和 Color 類提供的內容。要在自定義中執行此操作,請從 UITypeEditor 繼承,覆蓋 GetPaintValueSupported 并返回 true。然后,覆蓋 UITypeEditor.PaintValue 方法,并在自己的方法中使用 PaintValueEventArgs.Graphics 參數繪制圖形。最后,將 Editor 特性應用到使用 UITypeEditor 類的類或屬性。

        下面的屏幕快照顯示了結果外觀。

        圖 8:在 PropertyGrid 中顯示屬性的自定義圖形

        您也可以提供自己的下拉列表控件,這與 Control.Dock 屬性用來為用戶提供靠接選擇的控件類似。要執行此操作,請從 UITypeEditor 繼承,覆蓋 GetEditStyle,然后返回一個 UITypeEditorEditStyle 枚舉值,例如 DropDown。您的自定義下拉列表控件必須從 Control 或 Control 的派生類(例如 UserControl)繼承而來。然后,覆蓋 UITypeEditor.EditValue 方法。使用 IServiceProvider 參數調用 IServiceProvider.GetService 方法,以獲取一個 IWindowsFormsEditorService 實例。最后,調用 IWindowsFormsEditorService.DropDownControl 方法來顯示您的自定義下拉列表控件。請記住將 Editor 特性應用到使用 UITypeEditor 類的類或屬性中。

        下面的屏幕快照顯示了結果外觀。

        圖 9:在 PropertyGrid 中顯示屬性的自定義下拉列表控件

        除了使用 TypeEditor 和 UITypeEditor 類外,還可以自定義 PropertyGrid 以顯示其他屬性選項卡。屬性選項卡從 PropertyTab 類繼承而來。如果您使用過 Microsoft Visual C#™ .NET 中的屬性瀏覽器,那么就可能看到過自定義的 PropertyTab。Events 選項卡(帶有閃電圖形的按鈕)就是一個自定義的 PropertyTab。下面的屏幕快照顯示了自定義 PropertyTab 的另一個示例。可以使用 PropertyTab 編輯按鈕的邊界點,以創建自定義的按鈕形狀。

        圖 10:在 PropertyGrid 中顯示自定義選項卡

        有關使用 UITypeEditor 類自定義 PropertyGrid 的詳細信息,以及上述自定義用戶界面代碼示例,請參閱 Shawn Burke 的文章 Make Your Components Really RAD with Visual Studio .NET Property Browser(英文)。

        小結
        .NET 框架提供的 ProperyGrid 控件具有豐富的編輯功能,您可以使用這些編輯功能來改善您的用戶界面。PropertyGrid 的自定義非常簡單,您可以在任何應用程序中使用這一控件。此外,由于 Visual Studio .NET 屬性瀏覽器是建立在 PropertyGrid 的基礎之上的,因此您可以使用這些技術提供更豐富的設計時體驗。

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 亚洲精品在线免费观看| 日韩久久无码免费毛片软件| 免费国产成人午夜电影| 亚洲六月丁香六月婷婷色伊人| 久久w5ww成w人免费| 亚洲另类激情综合偷自拍| 一级毛片免费播放| 免费人成视频x8x8入口| 亚洲AV综合永久无码精品天堂| 国产精品无码免费播放| 伊人久久五月丁香综合中文亚洲 | 青青草国产免费久久久91| 亚洲成A人片77777国产| 亚洲人成电影在线观看青青| 国产免费丝袜调教视频| 亚洲kkk4444在线观看| 50岁老女人的毛片免费观看| 亚洲一区中文字幕在线电影网 | 亚洲av午夜成人片精品网站| 国产一区二区免费视频| 精品日韩亚洲AV无码一区二区三区| 狠狠热精品免费观看| 亚洲欧洲日产国码一级毛片| 亚洲AV网一区二区三区 | 四虎免费永久在线播放| 亚洲一卡2卡三卡4卡无卡下载| 卡一卡二卡三在线入口免费| 亚洲国产韩国一区二区| 午夜免费福利小电影| 亚洲国产91在线| 亚洲五月午夜免费在线视频| 99久久婷婷国产综合亚洲| 四虎永久免费网站免费观看| 国产啪精品视频网站免费尤物| 亚洲精品一级无码鲁丝片| 日本免费高清视频| 亚洲精品国产suv一区88| 亚洲乱码无码永久不卡在线| 99在线视频免费观看视频| 亚洲精品视频免费观看| 亚洲色欲久久久综合网东京热|