![](/img/trans.png)
[英]In a WinForms custom control, how can a new property change another at design-time?
[英]How can I add a nested design-time property to a user control?
我有一個包含多個面板控件的用戶控件。 用戶控件具有根據用戶控件中包含的某些變量的值來設置每個面板的可見性的邏輯。
我想通過添加以下枚舉來增強此功能:
public enum Visibility
{
Default,
Always,
Never
}
其中“ Default
將使用當前邏輯來設置面板的可見性,但“ Always
將(顯然)使面板始終可見,而“ Never
將始終隱藏面板。
我還想添加一個“嵌套的”設計時屬性,該名稱類似於PanelVisiblity
,開發人員可以對其進行擴展,並看到下面列出的面板名稱,並允許他們從Visibility
枚舉中為每個面板分配一個值。
如果我添加這樣的屬性:
public partial class MyControl : UserControl
{
public Visibility ActivePanel { get; set; }
public Visibility CodePanel { get; set; }
}
在ActivePanel
和CodePanel
屬性出現在Visual Studio中的屬性窗口中,我可以將它們設置為在枚舉的三個值中的一個。 但是,當我重構代碼以嘗試創建如下嵌套屬性時:
public partial class MyControl : UserControl
{
public class PanelVisibility
{
public enum Visibility
{
Default,
Always,
Never
}
public Visibility ActivePanel { get; set; }
public Visibility CodePanel { get; set; }
}
}
我沒有得到可擴展的PanelVisiblity
屬性,沒有得到禁用的Visiblity
屬性,其中值是類的名稱空間,加上“ PanelVisibility”。
在搜索詞組中,我用Google搜索了許多變體,但找不到與我要找的東西相似的東西。
任何方向將不勝感激。
似乎您正在尋找與DockPanel提供的功能相同的功能。
我建議您不要重新發明輪子,而應該使用一種可用的實現方式,例如:
http://msdn.microsoft.com/zh-CN/library/system.windows.controls.dockpanel.aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.