Граница GroupBox не отображается на Server 2016 при использовании цвета фона Gainsboro
Мы используем стандарт GroupBox
и Flat
-Стиль. Форма backgroundcolor это Gainsboro
,
На моей машине для разработки Windows 7 это выглядит так:
Однако при запуске приложения на компьютере под управлением Windows Server 2016 оно выглядит следующим образом:
Границы исчезли (не видно).
Похоже, что-то связано с цветом фона, но мы не уверены, как это исправить. При использовании светло-голубого цвета это происходит на сервере 2016:
Ребята, вы понимаете, почему мы не видим белую рамку с BG-Color? Gainsboro
? Это не имеет никакого смысла....
1 ответ
У меня нет сервера 2016, чтобы проверить его, но, возможно, переопределить Paint
Событие borderColor решит эту проблему, вот кастом GroupBox
контроль, вы можете изменить borderColor
Цвет внутри конструктора.
namespace WindowsFormsApplication5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
CustomGroupBox gb = new CustomGroupBox();
gb.Location = new Point(5, 5);
gb.Size = new Size(200, 100);
this.Controls.Add(gb);
}
}
public class CustomGroupBox : GroupBox
{
private Color borderColor;
public Color BorderColor
{
get { return this.borderColor; }
set { this.borderColor = value; }
}
public CustomGroupBox()
{
this.borderColor = Color.Red;
}
protected override void OnPaint(PaintEventArgs e)
{
Size tSize = TextRenderer.MeasureText(this.Text, this.Font);
Rectangle borderRect = e.ClipRectangle;
borderRect.Y += tSize.Height / 2;
borderRect.Height -= tSize.Height / 2;
ControlPaint.DrawBorder(e.Graphics, borderRect, this.borderColor, ButtonBorderStyle.Solid);
Rectangle textRect = e.ClipRectangle;
textRect.X += 6;
textRect.Width = tSize.Width;
textRect.Height = tSize.Height;
e.Graphics.FillRectangle(new SolidBrush(this.BackColor), textRect);
e.Graphics.DrawString(this.Text, this.Font, new SolidBrush(this.ForeColor), textRect);
}
}
}