WinForm窗體PropertyGrid控件的使用

  使用過 Microsoft Visual Basic 或 Microsoft Visual Studio .NET的朋友,一定使用過屬性瀏覽器來瀏覽、查看或編輯一個或多個對象的屬性。.NET 框架 PropertyGrid 控件是 Visual Studio .NET 屬性瀏覽器的核心。PropertyGrid 控件顯示對象或類型的屬性,并主要通過使用反射(在運行時提供類型信息的技術)來檢索項目的屬性。PropertyGrid控件包含以下部分:一般屬性、可展開屬性、屬性類別、屬性說明和屬性編輯器等。

  下面,我在我上一篇博客《Winform中DockPanel(引用WeifenLuo.WinFormsUI.Docking.dll組件)的使用》的基礎上以代碼的形式介紹PropertyGrid控件的使用。

  首先,定義一個PropertyGrid控件,并將其添加到DockPanelRight窗體

//為DockPanelLeft窗體添加PropertyGrid控件
propertyGrid = new PropertyGrid();
dockPanelSideRight.Controls.Add(propertyGrid);
InitPropertyGrid();private void InitPropertyGrid()
{propertyGrid.Location = new Point(0, 0);//propertyGrid.Anchor = AnchorStyles.Left;propertyGrid.Dock = DockStyle.Fill;
}

  其次,添加一個屬性類UserProperty,并自定義屬性,屬性類UserProperty代碼如下:

class UserProperty
{private string _AppName;private string _AppPath;private Point _Location;// = new Point(0, 0);private Size _Size = new Size(0, 0);private Color _BackColor;private Color _ForeColor;private Font _Font;private String _Text;[CategoryAttribute("常規"), DescriptionAttribute("應用程序名稱"), ReadOnlyAttribute(true)]public string AppName{get{return _AppName;}set{_AppName = value;}}[CategoryAttribute("常規"), DescriptionAttribute("應用程序路徑"), ReadOnlyAttribute(true)]public string AppPath{get{return _AppPath;}set{_AppPath = value;}}[CategoryAttribute("布局"), DescriptionAttribute("位置"), ReadOnlyAttribute(false)]public Point Location{get{return _Location;}set{_Location = value;}}[CategoryAttribute("布局"), DescriptionAttribute("尺寸"), ReadOnlyAttribute(false)]public Size Size{get{return _Size;}set{_Size = value;}}[CategoryAttribute("外觀"), DescriptionAttribute("背景色"), ReadOnlyAttribute(false)]public Color BackColor{get{return _BackColor;}set{_BackColor = value;}}[CategoryAttribute("外觀"), DescriptionAttribute("前景色"), ReadOnlyAttribute(false)]public Color ForeColor{get{return _ForeColor;}set{_ForeColor = value;}}[CategoryAttribute("外觀"), DescriptionAttribute("文本")]public String Text{get{return _Text;}set{_Text = value;}}[CategoryAttribute("外觀"), DescriptionAttribute("字體")]public Font Font{get{return _Font;}set{_Font = value;}}
}

  最后,實例化UserProperty類,并將其設定為propertyGrid的SelectedObject屬性

//設置PropertyGrid控件的值,自定義屬性
propertyUser = new UserProperty();
propertyGrid.SelectedObject = propertyUser;
InitPropertyUser();  private void InitPropertyUser()
{propertyUser.AppName = this.Text;propertyUser.Size = this.ClientSize;propertyUser.Location = this.Location;
}

  運行效果如下所示:

  

  要更改某些屬性的顯示方式,可以對這些屬性應用不同的特性。特性是用于為類型、字段、方法和屬性等編程元素添加批注的聲明標記,在運行時可以使用反射對其進行檢索。如下所示:

  • DescriptionAttribute   ? ?設置顯示在屬性下方說明幫助窗格中的屬性文本。這是一種為活動屬性(即具有焦點的屬性)提供幫助文本的有效方法。
  • CategoryAttribute    ? ?設置屬性在網格中所屬的類別。當您需要將屬性按類別名稱分組時,此特性非常有用。如果沒有為屬性指定類別,該屬性將被分配給雜項類別。
  • BrowsableAttribute   ? ? 表示是否在網格中顯示屬性。此特性可用于在網格中隱藏屬性。默認情況下,公共屬性始終顯示在網格中。
  • ReadOnlyAttribute   ? ? ?表示屬性是否為只讀。此特性可用于禁止在網格中編輯屬性。默認情況下,帶有 get 和 set 訪問函數的公共屬性在網格中是可以編輯的。
  • DefaultValueAttribute   ?表示屬性的默認值。如果希望為屬性提供默認值,然后確定該屬性值是否與默認值相同,則可使用此特性。可以將此特性應用于所有屬性。
  • DefaultPropertyAttribute 表示類的默認屬性。在網格中選擇某個類時,將首先突出顯示該類的默認屬性。

轉載于:https://www.cnblogs.com/gaohongchen01/p/4801715.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256722.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256722.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256722.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ROS環境下跑orb-slam2 單目相機

1、配置環境、安裝ROS ubuntu16.04 kinetic 2、安裝依賴 cmake opencv Eigen3: sudo apt-get install libeigen3-dev 3、創建catkin_ws 文件夾,并ROS初始化工作空間 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src catkin_init_workspace cd ~/catkin_ws/ …

有限元筆記05——板單元(4節點12自由度)和殼單元(4節點24自由度)

plane單元主要是受拉伸,plate板單元主要受彎曲應力,二者相加就形成了shell殼單元

鼠標提上去彈出提示層(定位)

希望的效果如圖&#xff1a; 網上找了各純css的 做了下修改&#xff1a; 代碼如下&#xff1a; 1234567891011121314151617181920212223242526272829303132333435363738394041424344<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w…

Codevs 4560 NOIP2015 D2T2 子串

> 4560 NOIP2015 D2T2 子串時間限制: 1 s空間限制: 128000 KB題目等級:黃金 Gold 題目描述 Description 有兩個僅包含小寫英文字母的字符串A和B。現在要從字符串A中取出k個互不重疊的非空子串&#xff0c;然后把這k個子串按照其在字符串A中出現的順序依次連接起來得到一個新…

方差和協方差的數據意義

方差和協方差 定義 方差 度量單個隨機變量的離散程度&#xff0c;公式如下&#xff1a; 協方差 度量兩個隨機變量&#xff08;變化趨勢&#xff09;的相似程度&#xff0c;定義如下&#xff1a;

Git 添加空文件夾的方法

http://stackoverflow.com/questions/115983/how-do-i-add-an-empty-directory-to-a-git-repositoryAnother way to make a directory stay empty (in the repo) is to create a .gitignore inside that directory that contains two lines: 在空目錄下創建.gitignore文件。 文…

《CSS揭秘》學習demo:第三章 形狀

這本書非常實用&#xff0c;我利用這一章所講的技巧自己做了幾個有意思的圖標&#xff0c;每個圖標都只用一個元素實現。 demo地址&#xff1a;http://codepen.io/Tutaizi/pen/akKQXo/轉載于:https://www.cnblogs.com/tuzisxy/p/5715351.html

SAP ABAP規劃 使用LOOP READ TABLE該方法取代雙LOOP內部表的方法

如上&#xff0c;用雙LOOP的方法實現兩個內表匹配篩選性能不高&#xff0c;能夠換成以下LOOP READ TABLE的方法 注意問題&#xff0c;gwa_vbap工作區READ TABLE之前需要排空。 版權聲明&#xff1a;本文博主原創文章。博客&#xff0c;未經同意不得轉載。 轉載于:https://www.c…

memcpy(cv::Mat.data,unsigned char *,320x240),保存數據失真問題解決方法

1、memcpy&#xff08;unsigned char *C&#xff0c;cv::Mat.data A,,320x240)&#xff0c;首先A是圖像完整的&#xff0c;通過copy到C中的時候&#xff0c;再copy到新的cv::Mat 圖像的對象上時&#xff0c;圖像發生失真 memcpy&#xff08;cv::Mat B.data,unsigned char *C,3…

有限元ansys/lsdyna學習筆記-組件component與組元part_02

詳細鏈接&#xff1a;https://wk.baidu.com/view/d24db6db856a561252d36f99?ivk_sa1023194j

centos6.4與win7雙系統時間同步錯誤解決辦法

第一步&#xff1a;編輯/etc/sysconfig/clock文件&#xff0c;在文件末尾添加如下兩行&#xff1a; UTCfalse ARCfalse 第二步&#xff1a;創建軟鏈接&#xff0c;設置centos的時區為上海&#xff1a; ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 第三步&#xf…

調研Android的開發環境的發展演變

在 知道要做基于移動端的項目實踐時&#xff0c;我就選定了Android&#xff0c;回來的時候查了很多相關的知識&#xff0c;很多人都在問開發安卓軟件&#xff0c;使用eclipse還是用 Android studio&#xff1f;其實&#xff0c;也沒有一個準確的答案&#xff0c;但是可以肯定的…

C++11 多線程庫使用說明

多線程基礎 1.1 進程與線程 根本區別&#xff1a; 進程是操作系統資源分配的基本單位&#xff0c;線程是任務調度和執行的基本單位 開銷方面&#xff1a; 每個進程都有自己獨立的代碼和數據空間&#xff0c;程序之間的切換開銷較大。 線程可以看作是輕量級的進程&#xff0c;同…

005 vim程序編輯器

1. 為何要學 vim 所有的 Unix Like 系統都會內建 vi 文本編輯器&#xff0c;其他的文書編輯器則不一定會存在&#xff1b;很多個別軟件的編輯接口都會主動呼叫 vi (例如未來會談到的 crontab, visudo, edquota 等指令)&#xff1b;vim 具有程序編輯的能力&#xff0c;可以主動…

Redis 實踐筆記1---基礎知識

前言 由于Redis的廣泛使用&#xff0c;加上在項目中涉及到Redis&#xff0c;因此會根據自己的使用和學習&#xff0c;寫一個Redis系列的博客&#xff0c;作為自己的筆記&#xff0c;同時也分享給大家。 What is Redis ? 看一下Redis的官網http://redis.io/對REDIS的描述&#…

[操作系統實驗lab4]實驗報告

實驗概況 在開始實驗之前&#xff0c;先對實驗整體有個大概的了解&#xff0c;這樣能讓我們更好地進行實驗。 我們本次實驗需要補充的內容包括一整套以sys開頭的系統調用函數&#xff0c;其中包括了進程間通信需要的一些系統調用如sys_ipc_can_recv等&#xff0c;以及補充完成f…

設計模式C++實踐

1、單例模式 1&#xff09;餓漢士單例模式 2&#xff09;懶漢士單例模式

js中怎么寫自執行函數

<!DOCTYPE html><html lang"en"><head> <meta charset"UTF-8"> <title></title> <script type"text/javascript"> /** * Window 是一個非常重要的對象 */ c…