[英]C# Custom Control Properties
我正在構建一些使用OPC來控制某些工業自動化的應用程序。 我已經決定為我將要使用的標准內容創建一些自定義控件(如按鈕和文本框)。 我的主要原因之一是我覺得最終對象是一個理想的模式,即按鈕是保存有關OPC項目信息的按鈕,否則在典型的應用程序中我的Form類被我的大量變量污染了他們應該更加全球化。 然后我開始使用按鈕的Tag屬性,但這需要一些對每個實例都相同的開銷代碼。 我覺得正確的做法是我想使用的子類控件,並提供配置每個控件的屬性。
考慮到這個背景,我真正的問題是這個。 為了使其盡可能便攜,我決定應該有一個屬性來定義OPC組。 我宣布了這樣的財產
public class OPCButton : Button
{
[Category("OPC")]
public OPCConnectedGroup
{
get { return _OPCGroup; }
set { _OPCGroup = value; }
}
}
當我添加控件時,這顯示在屬性列表中,但即使我的Form1包含,我也無法綁定此屬性
public OPCConnectedGroup Connection1 = new OPCConnectedGroup();
我已經解決了解決這個問題的方法,可能是創建一個額外的控件,如OPCGrp,可以添加到Form中,然后控件可以引用它。 為了測試我添加了一個Button類型的屬性,當我添加它並瀏覽到屬性時它確實給了我表單上所有按鈕的選項。 我對這種方法沒有太大的問題我只是想確保我遵循原型模式,因為我將負責維護控制庫但不總是實現並且我試圖將其簡化為1-2步驟來實現一個控件。
謝謝馬特
定義OPCConnectedGroup
您可以繼承Component
類。
這樣,如果你有一個類型的屬性OPCConnectedGroup
在OPCButton
,那么在設計時,你可以把實例OPCConnectedGroup
的形式,然后如果你選擇你的OPCButton
的設計師,類型,物業OPCConnectedGroup
將顯示為一個下拉列表,您可以選擇您在表單上放置的實例之一。
例:
如果我有這樣的MyButton
和MyClass
:
public class MyButton : Button
{
public MyClass MyClassInstance { get; set; }
}
public class MyClass : Component
{
public string SomeProperty {get;set;}
}
然后,您可以將一些(或一個) MyClass
實例放在表單的組件托盤上:
然后,如果在表單上選擇MyButton
,則可以從屬性網格中選擇一個MyClass
實例:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.