2016-04-21 89 views
0

我有一個特定樣式的按鈕,我在我的項目的多個用戶控件中重複使用。無論何時我想改變這個按鈕的視覺風格,我都必須在使用它的任何地方重複屬性更改,這是一種痛苦。C#窗體 - 自定義按鈕

我想「擴展」默認的Button控件,這樣我就可以在設計時在設計器中重用它,而無需在任何地方改變其風格。 I.e我想從工具箱中選擇我的ExtendedButton。

我還希望能夠在設計器中打開這個擴展按鈕,這樣我就可以使用設計器更改其設計,使其在使用中隨處更改。

我試圖CDO以下,但設計師將不會顯示任何東西,說:「將組件添加到您的類,從工具箱中拖他們......」

using System.ComponentModel; 
using System.Windows.Forms; 

namespace TestForm 
{ 
    [Designer(typeof(Button))] 
    public partial class ExtendedButton : Button 
    { 
     public ExtendedButton() 
     { 
      InitializeComponent(); 
     } 

     protected override void OnPaint(PaintEventArgs pe) 
     { 
      base.OnPaint(pe); 
     } 
    } 
} 

我怎麼能達致這請 ?謝謝。

回答

0

嗯,我得到它的工作。

我必須刪除我添加的[Designer(typeof(Button))],並在創建新的UserControl文件時調用默認未調用的基礎構造函數。

public partial class ExtendedButton : Button 
{ 
    public ExtendedButton() : base() 
    { 
     InitializeComponent(); 
    } 

    protected override void OnPaint(PaintEventArgs pe) 
    { 
     base.OnPaint(pe); 
    } 
} 
0

爲了讓您的窗框全球所有的擴展按鈕,你可以使用靜態變量:

class ExtendedButton : Button 
{ 
    public enum ExtendedStyle 
    { 
     Red, 
     Blue 
    } 

    private static ExtendedStyle style; 
    public ExtendedStyle Style 
    { 
     get { return style; } 
     set { style = value; } 
    } 

    protected override void OnPaint(PaintEventArgs pe) 
    { 
     base.OnPaint(pe); 

     if (style == ExtendedStyle.Red) 
      pe.Graphics.DrawRectangle(Pens.Red, 0, 0, Width - 1, Height - 1); 
     else 
      pe.Graphics.DrawRectangle(Pens.Blue, 0, 0, Width - 1, Height - 1); 
    } 
} 

如果更改設計師風格的所有按鈕會改變自己的風格