GroupBoxRenderer Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt Methoden zum Rendern eines Gruppenfeld-Steuerelements mit oder ohne visuelle Formatvorlagen bereit. Diese Klasse kann nicht vererbt werden.
public ref class GroupBoxRenderer sealed
public sealed class GroupBoxRenderer
type GroupBoxRenderer = class
Public NotInheritable Class GroupBoxRenderer
- Vererbung
-
GroupBoxRenderer
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie Sie ein benutzerdefiniertes Steuerelement erstellen, das die DrawGroupBox Methode verwendet, um ein Gruppenfeld mit einem doppelten Rahmen zu zeichnen, wenn visuelle Formatvorlagen aktiviert sind.
#using <System.Drawing.dll>
#using <System.Windows.Forms.dll>
#using <System.dll>
using namespace System;
using namespace System::Drawing;
using namespace System::Windows::Forms;
using namespace System::Windows::Forms::VisualStyles;
namespace GroupBoxRendererSample
{
public ref class CustomGroupBox : public Control
{
private:
Rectangle innerRectangle;
private:
GroupBoxState state;
private:
FlowLayoutPanel^ panel;
public:
CustomGroupBox() : Control()
{
innerRectangle = Rectangle();
state = GroupBoxState::Normal;
panel = gcnew FlowLayoutPanel();
this->Size = System::Drawing::Size(200, 200);
this->Location = Point(10, 10);
this->Controls->Add(panel);
this->Text = "CustomGroupBox";
this->Font = SystemFonts::IconTitleFont;
innerRectangle.X = ClientRectangle.X + 5;
innerRectangle.Y = ClientRectangle.Y + 15;
innerRectangle.Width = ClientRectangle.Width - 10;
innerRectangle.Height = ClientRectangle.Height - 20;
panel->FlowDirection = FlowDirection::TopDown;
panel->Location = Point(innerRectangle.X + 5,
innerRectangle.Y + 5);
panel->Size = System::Drawing::Size(innerRectangle.Width - 10,
innerRectangle.Height - 10);
}
// Draw the group box in the current state.
protected:
virtual void OnPaint(PaintEventArgs^ e) override
{
__super::OnPaint(e);
GroupBoxRenderer::DrawGroupBox(e->Graphics, ClientRectangle,
this->Text, this->Font, state);
// Draw an additional inner border if visual styles are enabled.
if (Application::RenderWithVisualStyles)
{
GroupBoxRenderer::DrawGroupBox(e->Graphics, innerRectangle,
state);
}
}
// Pass added controls to the internal FlowLayoutPanel.
protected:
virtual void OnControlAdded(ControlEventArgs^ e) override
{
__super::OnControlAdded(e);
// Ensure that you do not add the panel itself.
if (e->Control != this->panel)
{
this->Controls->Remove(e->Control);
panel->Controls->Add(e->Control);
}
}
};
ref class Form1 : public Form
{
public:
Form1() : Form()
{
CustomGroupBox^ groupBox1 = gcnew CustomGroupBox();
groupBox1->Text = "Radio Button Display";
Controls->Add(groupBox1);
// Add some radio buttons to test the CustomGroupBox.
int count = 8;
array<RadioButton^>^ buttonArray =
gcnew array<RadioButton^>(count);
for (int i = 0; i < count; i++)
{
buttonArray[i] = gcnew RadioButton();
buttonArray[i]->Text = "Button " + (i + 1).ToString();
groupBox1->Controls->Add(buttonArray[i]);
}
if (Application::RenderWithVisualStyles)
{
this->Text = "Visual Styles Enabled";
}
else
{
this->Text = "Visual Styles Disabled";
}
}
};
}
[STAThread]
int main()
{
// If you do not call EnableVisualStyles below, then
// GroupBoxRenderer automatically detects this and draws
// the group box without visual styles.
Application::EnableVisualStyles();
Application::Run(gcnew GroupBoxRendererSample::Form1());
}
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.VisualStyles;
namespace GroupBoxRendererSample
{
class Form1 : Form
{
private Button button1;
public Form1()
: base()
{
CustomGroupBox GroupBox1 = new CustomGroupBox();
button1 = new Button();
GroupBox1.Text = "Radio Button Display";
this.button1.Location = new System.Drawing.Point(205, 231);
this.button1.Size = new System.Drawing.Size(105, 23);
this.button1.Text = "Toggle Visual Styles";
this.button1.Click += new System.EventHandler(this.button1_Click);
Controls.Add(GroupBox1);
this.Controls.Add(this.button1);
// Add some radio buttons to test the CustomGroupBox.
int count = 8;
RadioButton[] ButtonArray = new RadioButton[count];
for (int i = 0; i < count; i++)
{
ButtonArray[i] = new RadioButton();
ButtonArray[i].Text = "Button " + (i + 1).ToString();
GroupBox1.Controls.Add(ButtonArray[i]);
}
if (Application.RenderWithVisualStyles)
this.Text = "Visual Styles Enabled";
else
this.Text = "Visual Styles Disabled";
}
[STAThread]
static void Main()
{
// If you do not call EnableVisualStyles below, then
// GroupBoxRenderer automatically detects this and draws
// the group box without visual styles.
Application.EnableVisualStyles();
Application.Run(new Form1());
}
// Match application style and toggle visual styles off
// and on for the application.
private void button1_Click(object sender, EventArgs e)
{
GroupBoxRenderer.RenderMatchingApplicationState = true;
Application.VisualStyleState =
Application.VisualStyleState ^
VisualStyleState.ClientAndNonClientAreasEnabled;
if (Application.RenderWithVisualStyles)
this.Text = "Visual Styles Enabled";
else
this.Text = "Visual Styles Disabled";
}
}
public class CustomGroupBox : Control
{
private Rectangle innerRectangle = new Rectangle();
private GroupBoxState state = GroupBoxState.Normal;
private FlowLayoutPanel panel = new FlowLayoutPanel();
public CustomGroupBox()
: base()
{
this.Size = new Size(200, 200);
this.Location = new Point(10, 10);
this.Controls.Add(panel);
this.Text = "CustomGroupBox";
this.Font = SystemFonts.IconTitleFont;
innerRectangle.X = ClientRectangle.X + 5;
innerRectangle.Y = ClientRectangle.Y + 15;
innerRectangle.Width = ClientRectangle.Width - 10;
innerRectangle.Height = ClientRectangle.Height - 20;
panel.FlowDirection = FlowDirection.TopDown;
panel.Location = new Point(innerRectangle.X + 5,
innerRectangle.Y + 5);
panel.Size = new Size(innerRectangle.Width - 10,
innerRectangle.Height - 10);
}
// Draw the group box in the current state.
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
GroupBoxRenderer.DrawGroupBox(e.Graphics, ClientRectangle,
this.Text, this.Font, state);
// Draw an additional inner border if visual styles are enabled.
if (Application.RenderWithVisualStyles)
{
GroupBoxRenderer.DrawGroupBox(e.Graphics, innerRectangle, state);
}
}
// Pass added controls to the internal FlowLayoutPanel.
protected override void OnControlAdded(ControlEventArgs e)
{
base.OnControlAdded(e);
// Ensure that you do not add the panel itself.
if (e.Control != this.panel)
{
this.Controls.Remove(e.Control);
panel.Controls.Add(e.Control);
}
}
}
}
Imports System.Drawing
Imports System.Windows.Forms
Imports System.Windows.Forms.VisualStyles
Class Form1
Inherits Form
Private WithEvents button1 As Button
Public Sub New()
Dim GroupBox1 As New CustomGroupBox()
button1 = New Button()
GroupBox1.Text = "Radio Button Display"
Me.button1.Location = New System.Drawing.Point(185, 231)
Me.button1.Size = New System.Drawing.Size(105, 23)
Me.button1.Text = "Toggle Visual Styles"
Controls.Add(GroupBox1)
Me.Controls.Add(Me.button1)
' Add some radio buttons to test the CustomGroupBox.
Dim count As Integer = 8
Dim ButtonArray(count) As RadioButton
For i = 0 To count - 1
ButtonArray(i) = New RadioButton()
ButtonArray(i).Text = "Button " +(i + 1).ToString()
GroupBox1.Controls.Add(ButtonArray(i))
Next
If Application.RenderWithVisualStyles Then
Me.Text = "Visual Styles Enabled"
Else
Me.Text = "Visual Styles Disabled"
End If
End Sub
<STAThread()> _
Shared Sub Main()
' If you do not call EnableVisualStyles below, then
' GroupBoxRenderer automatically detects this and draws
' the group box without visual styles.
Application.EnableVisualStyles()
Application.Run(New Form1())
End Sub
' Match application style and toggle visual styles off
' and on for the application.
Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) _
Handles button1.Click
GroupBoxRenderer.RenderMatchingApplicationState = True
Application.VisualStyleState = _
Application.VisualStyleState Xor _
VisualStyleState.ClientAndNonClientAreasEnabled
If Application.RenderWithVisualStyles Then
Me.Text = "Visual Styles Enabled"
Else
Me.Text = "Visual Styles Disabled"
End If
End Sub
End Class
Public Class CustomGroupBox
Inherits Control
Private innerRectangle As New Rectangle()
Private state As GroupBoxState = GroupBoxState.Normal
Private panel As New FlowLayoutPanel()
Public Sub New()
Me.Size = New Size(200, 200)
Me.Location = New Point(10, 10)
Me.Controls.Add(panel)
Me.Text = "CustomGroupBox"
Me.Font = SystemFonts.IconTitleFont
innerRectangle.X = ClientRectangle.X + 5
innerRectangle.Y = ClientRectangle.Y + 15
innerRectangle.Width = ClientRectangle.Width - 10
innerRectangle.Height = ClientRectangle.Height - 20
panel.FlowDirection = FlowDirection.TopDown
panel.Location = New Point(innerRectangle.X + 5, innerRectangle.Y + 5)
panel.Size = New Size(innerRectangle.Width - 10, innerRectangle.Height - 10)
End Sub
' Draw the group box in the current state.
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
MyBase.OnPaint(e)
GroupBoxRenderer.DrawGroupBox(e.Graphics, ClientRectangle, Me.Text, Me.Font, state)
' Draw an additional inner border if visual styles are enabled.
If Application.RenderWithVisualStyles Then
GroupBoxRenderer.DrawGroupBox(e.Graphics, innerRectangle, state)
End If
End Sub
' Pass added controls to the internal FlowLayoutPanel.
Protected Overrides Sub OnControlAdded(ByVal e As ControlEventArgs)
MyBase.OnControlAdded(e)
' Ensure that you do not add the panel itself.
If e.Control IsNot Me.panel Then
Me.Controls.Remove(e.Control)
panel.Controls.Add(e.Control)
End If
End Sub
End Class
Hinweise
Die GroupBoxRenderer Klasse stellt eine Reihe von static Methoden bereit, die zum Rendern eines Gruppenfeld-Steuerelements verwendet werden können. Das Rendern eines Steuerelements bezieht sich auf das Zeichnen der Benutzeroberfläche eines Steuerelements. Verwenden Sie zum Zeichnen eines Gruppenfelds eine der DrawGroupBox Methoden. Diese Methoden bieten eine Vielzahl von Textzeichnungsoptionen.
Wenn visuelle Formatvorlagen im Betriebssystem aktiviert sind und visuelle Formatvorlagen auf die aktuelle Anwendung angewendet werden, DrawGroupBox wird das Gruppenfeld mit der aktuellen visuellen Formatvorlage gezeichnet. Andernfalls zeichnet DrawGroupBox das Gruppenfeld mit der klassischen Windows Formatvorlage. Dies ist nützlich, wenn Sie ein benutzerdefiniertes Steuerelement zeichnen, das automatisch mit der aktuellen Einstellung für die visuelle Formatvorlage des Betriebssystems übereinstimmen soll.
Diese Klasse umschließt die Funktionalität eines Elements System.Windows.Forms.VisualStyles.VisualStyleRenderer , das auf eines der von der System.Windows.Forms.VisualStyles.VisualStyleElement.Button.GroupBox Klasse verfügbar gemachten Elemente festgelegt ist. Weitere Informationen finden Sie unter Renderingsteuerelemente mit visuellen Formatvorlagen.
Eigenschaften
| Name | Beschreibung |
|---|---|
| RenderMatchingApplicationState |
Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob der Renderer den Anwendungszustand verwendet, um den Renderingstil zu bestimmen. |
Methoden
| Name | Beschreibung |
|---|---|
| DrawGroupBox(Graphics, Rectangle, GroupBoxState) |
Zeichnet ein Gruppenfeld-Steuerelement im angegebenen Zustand und an den Grenzen. |
| DrawGroupBox(Graphics, Rectangle, String, Font, Color, GroupBoxState) |
Zeichnet ein Gruppenfeld-Steuerelement in den angegebenen Zustand und Grenzen mit dem angegebenen Text, der Schriftart und der Farbe. |
| DrawGroupBox(Graphics, Rectangle, String, Font, Color, TextFormatFlags, GroupBoxState) |
Zeichnet ein Gruppenfeld-Steuerelement in den angegebenen Zustand und Grenzen mit dem angegebenen Text, der Schriftart, der Farbe und der Textformatierung. |
| DrawGroupBox(Graphics, Rectangle, String, Font, GroupBoxState) |
Zeichnet ein Gruppenfeld-Steuerelement in den angegebenen Zustand und Grenzen mit dem angegebenen Text und der angegebenen Schriftart. |
| DrawGroupBox(Graphics, Rectangle, String, Font, TextFormatFlags, GroupBoxState) |
Zeichnet ein Gruppenfeld-Steuerelement in den angegebenen Zustand und Grenzen mit dem angegebenen Text, der Schriftart und der Textformatierung. |
| DrawParentBackground(Graphics, Rectangle, Control) |
Zeichnet den Hintergrund des übergeordneten Elements eines Steuerelements im angegebenen Bereich. |
| Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
| GetHashCode() |
Dient als Standardhashfunktion. (Geerbt von Object) |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| IsBackgroundPartiallyTransparent(GroupBoxState) |
Gibt an, ob der Hintergrund des Gruppenfelds über semitransparente oder alphavermischungte Teile verfügt. |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |