2011-10-02 62 views
2

我有一個用戶定義的按鈕,它可能有一個Style屬性,我在properties窗口中爲它選擇一個值,取決於該值,它的圖像和樣式會改變。如何爲用戶定義的按鈕創建具有已知和固定值的屬性?

如何讓此屬性在properties窗口的下拉列表中具有一些預定義的和固定的值?和選擇一個值將導致運行的方法


-details:

該按鈕可以被指定等外觀暫停播放樣式。所以我做了樣式類:

​​

而且還有用於設置指定樣式的按鈕的方法(暫停,播放,...):

public void SetStyle(ButtonStyle style) 
{ 
    button1.Image = style.GetImage();      
} 

現在,我怎麼能有在properties窗口這個自定義按鈕的屬性,這家酒店像pauseplay一些默認值,並選擇它導致改變按鈕的風格(與運行的SetStyle方法)

回答

2

我會做一個枚舉並將其公開爲Style屬性。然後,有一個內部字典,鍵入枚舉值來選擇適當的ButtonStyle對象傳遞給SetStyle方法。

+0

我在想這樣那樣避開我沒有使用屬性裏面的方法的唯一的事。謝謝 – Mouliyan

1

我認爲,所有你需要做的就是繼承Button類,並添加您的枚舉:

public class ButtonEx : Button 
{ 
    public enum ButtonStateStyles 
    { 
    None, 
    Pause, 
    Play, 
    } 

    private ButtonStateStyles _ButtonStateStyle = ButtonStateStyles.None; 

    public ButtonStateStyles ButtonStateStyle 
    { 
    get { return _ButtonStateStyle; } 
    set 
    { 
     _ButtonStateStyle = value; 

     switch (_ButtonStateStyle) 
     { 
     case ButtonStateStyles.Pause: 
      { 
      base.Image = new PauseButtonStyle().GetImage(); 
      break; 
      } 
     case ButtonStateStyles.Play: 
      { 
      base.Image = new PlayButtonStyle().GetImage(); 
      break; 
      } 
     default: 
      { 
      base.Image = null; 
      break; 
      } 
     } 
    } 
    } 
} 
+0

謝謝,但是在一個屬性裏面調用一個好方法是一種方法? – Mouliyan

+0

@Mouliyan取決於方法,我想。你的方法只是改變其他屬性,所以沒關係。我的機器不介意。 – LarsTech

+0

嗯,謝謝。 +1 – Mouliyan

相關問題