我有一个用户定义的按钮,它可能有一个Style
属性,我在properties
窗口中为它选择一个值,并根据该值,它的图像和样式将会改变。
如何在properties
窗口的下拉列表中使此属性具有一些预定义和固定值?并选择一个值会导致运行方法
-details:
此按钮可能会获得指定的外观,例如暂停和播放样式。所以我为风格做了一个课:
// style of the button; pause, play, reset, etc
public abstract class ButtonStyle
{
public abstract Image GetImage();
}
// inherited classes of class ButtonStyle
public class PauseButtonStyle : ButtonStyle
{
public override Image GetImage()
{
return CustomButtonLibrary.Properties.Resources.PauseButton;
}
}
public class PlayButtonStyle : ButtonStyle
{
public override Image GetImage()
{
return CustomButtonLibrary.Properties.Resources.PlayButton;
}
}
按钮中有一个方法可以设置指定的样式(暂停,播放......):
public void SetStyle(ButtonStyle style)
{
button1.Image = style.GetImage();
}
现在我如何在properties
窗口中为此自定义按钮设置一个属性,此属性具有一些默认值,如pause
,play
等并选择它会导致更改按钮的样式(使用运行的SetStyle方法)
答案 0 :(得分:2)
我会创建一个枚举并将其公开为Style
属性。然后,有一个内部字典,用于关闭枚举值,以选择适当的ButtonStyle
对象传递给您的SetStyle
方法。
答案 1 :(得分: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;
}
}
}
}
}