C# 按钮派生的自定义控件的背景/边框
我有一个来自按钮的CustomControl。在该控件生命周期的某些时刻,我想将其背景设置为一种特殊颜色(即梅花色)或一种普通控件颜色(即与其他按钮的默认颜色相同)。以下是最有效的相关代码C# 按钮派生的自定义控件的背景/边框,c#,winforms,button,background,border,C#,Winforms,Button,Background,Border,我有一个来自按钮的CustomControl。在该控件生命周期的某些时刻,我想将其背景设置为一种特殊颜色(即梅花色)或一种普通控件颜色(即与其他按钮的默认颜色相同)。以下是最有效的相关代码 public partial class MySpecialButton : Button { private void SetButtonState() { if (isSpecial && Enabled) { Bac
public partial class MySpecialButton : Button
{
private void SetButtonState()
{
if (isSpecial && Enabled)
{
BackColor = Color.Plum;
}
else
{
BackColor = Enabled ? SystemColors.Control : SystemColors.ControlDark;
}
}
}
这有几个问题:
按钮的BackColor
属性设置为use visualstylebackcolor
会导致设置use visualstylebackcolor
为false
,而您看到的普通按钮和自定义按钮之间的差异正是由于此。要解决此问题,应在将BackColor
重置为SystemColors.Control
后,再次将UseVisualStyleBackColor
设置为true
FlatStyle
设置为Flat
,然后使用FlatAppearance.BorderSize=0
或您喜欢的任何其他外观和边框大小按钮的前景色根据背景色计算。因此,如果您按照第一条中所述重置背景颜色,您将看不到任何差异