天天看點

怎麼用C#寫一個控件庫

怎麼用C#寫一個控件庫

控件庫,說白了,就是個類庫項目。不過這個類庫内定義了一系列自定義的控件。整個項目(類庫+調用項目)結構大概是這個樣

怎麼用C#寫一個控件庫

請忽略​

​Class2​

​​和​

​ClassDiagram1.cd​

​,這是我之前一個博文

用到的項目,留下來也無關緊要。​

​UserControl2.cs​

​就是我們的一個控件了。長這個樣

怎麼用C#寫一個控件庫

一個TextBox下面有一條線,線寬等于文本框的寬等于整個控件的寬。當然,這需要在cs代碼中做一些調整(設定屬性或是什麼)。代碼長這個樣,僅供參考

怎麼用C#寫一個控件庫
private int width;      

定義了一個字段,用來訓示控件的寬度,private。然後定義了一個屬性,也是用來訓示控件寬度,public。這樣在類外通路控件寬度需通過屬性,而不是直接把字段暴露給外部。

[Description("控件寬度"), Category("自定義屬性")]
public int selfWidth
{
    get
    {
        return width;
    }
    set
    {
        this.width = value;
        this.Width = value;
        this.txtBox.Width = value;
        this.pictureBox.Width = value;
    }
}      

其中

[Description("控件寬度"), Category("自定義屬性")]      

加上這行表明這個屬性代表了​

​控件寬度​

​​,後面的​

​Category​

​是分組情況。這行的意義是用了這個控件之後,就能在目前窗體設計器上面友善地改動屬性值,就像這樣

怎麼用C#寫一個控件庫

還有最後一段代碼

private void UserControl1_SizeChanged(object sender, EventArgs e)
{
    this.selfWidth = this.Width;
}      

盡管這個控件在主調窗體加載完之後大小就固定了,但是仍要增加控件尺寸改變事件。這樣做是為了保證控件在窗體設計階段拖拽能即時地調整自己相關的屬性,而不至于外殼改變了,而裡面的東西卻還是老樣子。