2017-08-25 4 views
1

Wir verwenden den Standard GroupBox und den Flat -Style. Die Form Hintergrundfarbe ist Gainsboro.GroupBox Border nicht sichtbar auf Server 2016 bei Verwendung der Hintergrundfarbe Gainsboro

Auf meinem Windows 7 Entwicklungsmaschine sieht es wie folgt aus:

Windows Server 2016

:

Win7Example

Wenn jedoch die Anwendung in einem Windows Server 2016-Maschine ausgeführt wird, sieht es so aus

Die Ränder sind weg (nicht sichtbar).

Es scheint, etwas mit der Hintergrundfarbe zu tun, aber wir sind nicht sicher, wie man es repariert. Wenn eine hellblaue Farbe verwendet wird, geschieht dies auf Server 2016:

othercolor

Haben Sie Jungs keine Ahnung haben, warum können wir nicht den weißen Rand mit der BG-Farbe Gainsboro sehen? Es macht keinen Sinn machen ....

+0

Sind Sie lokal oder über RDP angemeldet? – Filburt

+0

Ich bin lokal und mit virtuellen Box – Jannik

Antwort

0

Ich habe nicht Server 2016 zu testen, aber vielleicht das Überschreiben der Paint Ereignis des border wird dieses Problem lösen, hier ein Brauch ist GroupBox Steuerung können Sie borderColor Farbe ändern im Konstruktor.

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); 
     } 
    } 
} 
+1

Ich habe etwas ähnliches versucht, aber es sah nicht 100% gleich wie zuvor. Aber ich werde dich am Montag wissen lassen, ob das besser geht. :) – Jannik

Verwandte Themen