Die anderen Lösungen auf dieser Website haben für mich nicht funktioniert so, um herauszufinden, ich versuche, was ich falsch mache:Zeichnen Sie einen Rahmen um GroupBox C#
Dies ist WinForm App
private void dk_buff_box_Paint(object sender, PaintEventArgs e)
{
Console.WriteLine("INSIDE!!");
ControlPaint.DrawBorder(e.Graphics, this.ClientRectangle, Color.Red, ButtonBorderStyle.Solid);
GroupBox box = sender as GroupBox;
DrawGroupBox(box, e.Graphics, Color.Red, Color.Black);
}
private void DrawGroupBox(GroupBox box, Graphics g, Color textColor, Color borderColor)
{
if (box != null)
{
Brush textBrush = new SolidBrush(textColor);
Brush borderBrush = new SolidBrush(borderColor);
Pen borderPen = new Pen(borderBrush);
SizeF strSize = g.MeasureString(box.Text, box.Font);
Rectangle rect = new Rectangle(box.ClientRectangle.X,
box.ClientRectangle.Y + (int)(strSize.Height/2),
box.ClientRectangle.Width - 1,
box.ClientRectangle.Height - (int)(strSize.Height/2) - 1);
// Clear text and border
g.Clear(this.BackColor);
// Draw text
g.DrawString(box.Text, box.Font, textBrush, box.Padding.Left, 0);
// Drawing Border
//Left
g.DrawLine(borderPen, rect.Location, new Point(rect.X, rect.Y + rect.Height));
//Right
g.DrawLine(borderPen, new Point(rect.X + rect.Width, rect.Y), new Point(rect.X + rect.Width, rect.Y + rect.Height));
//Bottom
g.DrawLine(borderPen, new Point(rect.X, rect.Y + rect.Height), new Point(rect.X + rect.Width, rect.Y + rect.Height));
//Top1
g.DrawLine(borderPen, new Point(rect.X, rect.Y), new Point(rect.X + box.Padding.Left, rect.Y));
//Top2
g.DrawLine(borderPen, new Point(rect.X + box.Padding.Left + (int)(strSize.Width), rect.Y), new Point(rect.X + rect.Width, rect.Y));
}
}
Dieser Code löst niemals den "INSIDE !!" zu meiner Konsolenausgabe und der Rahmen um die Groupbox (genannt dk_buff_box) ist immer grau und sehr hell. (Ich nehme an, dass das Standard ist ??)
Was muss ich tun, um diese Grenze zu ändern, um Farbe zu ändern? Ich habe ein paar .cs-Dateien, die zusammenarbeiten (Steuerelemente) Die Hauptdatei .cs ist form1.cs. Der obige Code befindet sich in einer separaten CS-Datei namens darkknightinfo.cs
Sollte der Code auf dem Hauptformular sein? oder sollte es in der .cs-Datei sein, die die eigentliche Groupbox enthält?
Was muss ich tun, damit _Paint() den Code richtig aktiviert und ausführt, um die Gruppenrahmen-Rahmenfarbe zu ändern?
Warum fügen Sie den Rahmen in WPF XAML nicht hinzu? –
Was ist WPF XAML? – DerekConlon
Ist es WPF oder WinForm App? Bitte klären Sie. –