GroupBoxRenderer Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Innehåller metoder som används för att återge en grupprutekontroll med eller utan visuella format. Det går inte att ärva den här klassen.
public ref class GroupBoxRenderer sealed
public ref class GroupBoxRenderer abstract sealed
public sealed class GroupBoxRenderer
public static class GroupBoxRenderer
type GroupBoxRenderer = class
Public NotInheritable Class GroupBoxRenderer
Public Class GroupBoxRenderer
- Arv
-
GroupBoxRenderer
Exempel
I följande kodexempel visas hur du skapar en anpassad kontroll som använder DrawGroupBox metoden för att rita en gruppruta med en dubbel kantlinje om visuella format är aktiverade.
#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
Kommentarer
Klassen GroupBoxRenderer innehåller en uppsättning static metoder som kan användas för att återge en grupprutekontroll. Rendering av en kontroll syftar på att rita användargränssnittet för en kontroll. Om du vill rita en gruppruta använder du någon av DrawGroupBox metoderna. De här metoderna innehåller en mängd olika alternativ för textritning.
Om visuella format är aktiverade i operativsystemet och visuella format tillämpas på det aktuella programmet ritar DrawGroupBox du grupprutan med det aktuella visuella formatet. Annars ritar DrawGroupBox grupprutan med det klassiska Windows formatet. Det här är användbart om du ritar en anpassad kontroll som automatiskt ska matcha den aktuella inställningen för visuellt format i operativsystemet.
Den här klassen omsluter funktionerna i en System.Windows.Forms.VisualStyles.VisualStyleRenderer som är inställd på ett av de element som exponeras av klassen System.Windows.Forms.VisualStyles.VisualStyleElement.Button.GroupBox. Mer information finns i Renderingskontroller med visuella format.
Egenskaper
| Name | Description |
|---|---|
| RenderMatchingApplicationState |
Hämtar eller anger ett värde som anger om renderaren använder programtillståndet för att fastställa renderingsformat. |
Metoder
| Name | Description |
|---|---|
| DrawGroupBox(Graphics, Rectangle, GroupBoxState) |
Ritar en grupprutekontroll i det angivna tillståndet och gränserna. |
| DrawGroupBox(Graphics, Rectangle, String, Font, Color, GroupBoxState) |
Ritar en grupprutekontroll i det angivna tillståndet och gränserna, med angiven text, teckensnitt och färg. |
| DrawGroupBox(Graphics, Rectangle, String, Font, Color, TextFormatFlags, GroupBoxState) |
Ritar en grupprutekontroll i det angivna tillståndet och gränserna, med angiven text, teckensnitt, färg och textformatering. |
| DrawGroupBox(Graphics, Rectangle, String, Font, GroupBoxState) |
Ritar en grupprutekontroll i det angivna tillståndet och gränserna, med angiven text och teckensnitt. |
| DrawGroupBox(Graphics, Rectangle, String, Font, TextFormatFlags, GroupBoxState) |
Ritar en grupprutekontroll i det angivna tillståndet och gränserna, med angiven text, teckensnitt och textformatering. |
| DrawParentBackground(Graphics, Rectangle, Control) |
Ritar bakgrunden till en kontrolls överordnade i det angivna området. |
| IsBackgroundPartiallyTransparent(GroupBoxState) |
Anger om grupprutans bakgrund har några halvtransparent eller alfablandade bitar. |