GroupBoxRenderer Klas

Definitie

Biedt methoden voor het weergeven van een groepsvak met of zonder visuele stijlen. Deze klasse kan niet worden overgenomen.

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
Overname
GroupBoxRenderer

Voorbeelden

In het volgende codevoorbeeld ziet u hoe u een aangepast besturingselement maakt dat gebruikmaakt van de DrawGroupBox methode om een groepsvak met een dubbele rand te tekenen als visuele stijlen zijn ingeschakeld.

#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

Opmerkingen

De GroupBoxRenderer klasse biedt een set static methoden die kunnen worden gebruikt om een groepsvak besturingselement weer te geven. Het weergeven van een besturingselement verwijst naar het tekenen van de gebruikersinterface van een besturingselement. Als u een groepsvak wilt tekenen, gebruikt u een van de DrawGroupBox methoden. Deze methoden bieden verschillende opties voor teksttekening.

Als visuele stijlen zijn ingeschakeld in het besturingssysteem en visuele stijlen worden toegepast op de huidige toepassing, DrawGroupBox tekent u het groepsvak met de huidige visuele stijl. Anders tekent DrawGroupBox het groepsvak met de klassieke Windows stijl. Dit is handig als u een aangepast besturingselement tekent dat automatisch overeenkomt met de huidige instelling van de visuele stijl van het besturingssysteem.

Deze klasse verpakt de functionaliteit van een System.Windows.Forms.VisualStyles.VisualStyleRenderer die is ingesteld op een van de elementen die worden weergegeven door de klasse System.Windows.Forms.VisualStyles.VisualStyleElement.Button.GroupBox. Zie Weergavebesturingselementen met visuele stijlen voor meer informatie.

Eigenschappen

Name Description
RenderMatchingApplicationState

Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of de renderer de toepassingsstatus gebruikt om de weergavestijl te bepalen.

Methoden

Name Description
DrawGroupBox(Graphics, Rectangle, GroupBoxState)

Hiermee tekent u een groepsvak in de opgegeven status en grenzen.

DrawGroupBox(Graphics, Rectangle, String, Font, Color, GroupBoxState)

Hiermee tekent u een groepsvak in de opgegeven status en grenzen, met de opgegeven tekst, het lettertype en de kleur.

DrawGroupBox(Graphics, Rectangle, String, Font, Color, TextFormatFlags, GroupBoxState)

Hiermee tekent u een groepsvak in de opgegeven status en grenzen, met de opgegeven tekst, het lettertype, de kleur en de tekstopmaak.

DrawGroupBox(Graphics, Rectangle, String, Font, GroupBoxState)

Hiermee tekent u een groepsvak in de opgegeven status en grenzen, met de opgegeven tekst en het opgegeven lettertype.

DrawGroupBox(Graphics, Rectangle, String, Font, TextFormatFlags, GroupBoxState)

Hiermee tekent u een groepsvak in de opgegeven status en grenzen, met de opgegeven tekst, het lettertype en de tekstopmaak.

DrawParentBackground(Graphics, Rectangle, Control)

Hiermee tekent u de achtergrond van het bovenliggende besturingselement in het opgegeven gebied.

IsBackgroundPartiallyTransparent(GroupBoxState)

Hiermee wordt aangegeven of de achtergrond van het groepsvak semitransparante of alfa-blended stukken bevat.

Van toepassing op

Zie ook