我们使用标准GroupBox
和Flat
- 样式。表格backgroundcolor为Gainsboro
。
在我的Windows 7开发机器上,它看起来像这样:
但是,在Windows Server 2016计算机上运行应用程序时,它看起来像这样:
边框消失(不可见)。
它似乎与背景颜色有关,但我们不确定如何修复它。使用浅蓝色时,会在Server 2016上发生这种情况:
你们有什么线索,为什么我们看不到BG-Color Gainsboro
的白色边框?它没有任何意义....
答案 0 :(得分:1)
我没有服务器2016来测试它,但是可能覆盖borderColor的Paint
事件会解决这个问题,这里是一个自定义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);
}
}
}