為系統控制元件增加一個自定義屬性項,并保留控制元件原有屬性。
在WinForm中選擇一個系統自定義控制元件,比如是pictureBox,系結的propertyGrid會顯示相應的屬性,
我想再添加個屬性項,比如在propertyGrid自定義添加一個“author”屬性,
按我現在的理解,應該是新建一個基于PictureBox類的新類,在新類中增加“author”屬性,我不想影響系統控制元件原有屬性,
只想增加一個屬性項,所以這種方法應該很麻煩,有沒有其它簡單的方法
就是針對系統原有控制元件的,不是自定義控制元件.
謝謝。
uj5u.com熱心網友回復:
江湖黑話“托盤組控制元件”就是微軟邊上那塊,不在UI界面上顯示,在最底部“橫條”內放置的,比如DataBindingSource,ErrorProdvider都是這一類,他們會實作
IExtenderProvider介面
那么我們誰便百度一下IExtenderProvider就能得到資料了
https://www.cnblogs.com/ahdung/p/4169724.html
ps:wpf有所謂的依賴屬性,解決的也是一樣的事情
uj5u.com熱心網友回復:
謝謝,這個不算自定義屬性項吧,沒有辦法進行定制和開發的。
uj5u.com熱心網友回復:
我大概明白你的意思了,你要把pg嵌入到自己的軟體里這樣也好辦,依舊還是那個上面那個方法。然后外面套個動態代理類,emit動態擴展屬性。
var 動態代理物件= 動態代理生成器
.Add<IExtenderProvide,XXXX你自己實作的>
.Create()
這樣一個動態代理物件就可以了,中間那個add相當于新增規則,畢竟我們有時候只是想為某些特定型別動態添加特定屬性,所以我需要指定一下規則(這里我就接用這個IExtenderProvide規則,和上面的特性定義)
uj5u.com熱心網友回復:
實際上我認為微軟也是一模一樣的做法,他最大的可能是遍歷了Container和Site的東西(查找里面是否有IExtenderProvide的實體)so,我們可以做個實驗,首先按上面繼承實作他,然后往你自己的根容器里add一個那個實體,然后在看結果。
要下班了,我就不實驗了,等有空了,試試看
uj5u.com熱心網友回復:
to wanghui0380,謝謝。實際的需求是要開發一個原型設計器,類似設計時的開發界面,利用propertyGrid對控制元件進行調整。
我以前也沒有接觸過這方面的知識,基于DesignSurface和一些FormDesigner的代碼把主要功能做出來了,
其中pictureBox的image源都是本地的,現在希望在資料庫中獲取,我想增加一個屬性項,去瀏覽、選擇資料庫中的記錄,來實作與image屬性類似功能
關于propertyGrid,大部分的資訊是要么是基于自定義類或物件的屬性,要么是標準控制元件的原屬性進行的過濾和篩選,沒有做標準控制元件屬性增加的。
我想propertyGrid顯示的都控制元件的類屬性,現在不知道應該考慮是在控制元件類上做開發,還是在propertyGrid上做開發,先謝謝。
uj5u.com熱心網友回復:
下午看看了IExtenderProvider的資訊,還沒有看明白,正在看,希望有時間了指點一下。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/204087.html
標籤:C#
