簡體   English   中英

C#自定義控件屬性

[英]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類。

這樣,如果你有一個類型的屬性OPCConnectedGroupOPCButton ,那么在設計時,你可以把實例OPCConnectedGroup的形式,然后如果你選擇你的OPCButton的設計師,類型,物業OPCConnectedGroup將顯示為一個下拉列表,您可以選擇您在表單上放置的實例之一。

例:

如果我有這樣的MyButtonMyClass

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM