【发布时间】:2018-08-27 06:21:37
【问题描述】:
我创建了一个继承自 Button 的自定义控件类。
我这样做的原因是我需要创建相同的 Button,而且我不想每次都做所有事情。
另外,我想要一个用于我添加的属性的下拉列表选择器,可以从表单设计器中的属性网格访问。
例如,我想要三种不同的颜色而没有其他颜色,所以我想要为这个新属性启用一个 DropDown 选择器。我为此使用了一个枚举并且它有效,但问题是当我选择例如Red 时,它不会改变颜色。我的代码是:
public class CustomButton : Button
{
public NormalColor CLR { get; set; }
public enum NormalColor
{
Red,
Blue,
Yellow
}
public CustomButton()
{
if (CLR == NormalColor.Blue)
{
BackColor = Color.Blue;
}
else if (CLR == NormalColor.Red)
{
BackColor = Color.Red;
}
else if (CLR == NormalColor.Yellow)
{
BackColor = Color.Yellow;
}
else
{
BackColor = Color.FromArgb(18, 18, 18);
}
ForeColor = Color.White;
FlatAppearance.BorderSize = 0;
FlatStyle = FlatStyle.Flat;
Size = new Size(100, 100);
MouseEnter += CustomButton_MouseEnter;
MouseLeave += CustomButton_MouseLeave;
MouseClick += CustomButton_MouseClick;
}
}
【问题讨论】:
-
构造函数首先被调用 - 在任何其他代码之前......所以也许你需要将你的 CLR if 语句移动到另一个方法中,并在你更改 CLR 值时调用它
标签: c# winforms oop controls custom-controls