(0) exportieren Drucken
Alle erweitern

ComboBoxRenderer-Klasse

Aktualisiert: November 2007

Stellt Methoden bereit, mit denen ein Kombinationsfeld-Steuerelement mit visuellen Stilen wiedergegeben wird. Diese Klasse kann nicht geerbt werden.

Namespace:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

public sealed class ComboBoxRenderer
public final class ComboBoxRenderer
public final class ComboBoxRenderer

Die ComboBoxRenderer-Klasse stellt eine Reihe von static-Methoden bereit, mit denen ein Kombinationsfeld-Steuerelement mit dem aktuellen visuellen Stil des Betriebssystems wiedergegeben werden kann. Mit Wiedergabe eines Steuerelements ist das Zeichnen der Benutzeroberfläche des Steuerelements gemeint. Dies ist hilfreich, wenn Sie ein benutzerdefiniertes Steuerelement zeichnen, das den aktuellen visuellen Stil aufweisen soll. Zeichnen Sie ein Kombinationsfeld, indem Sie das Textfeld mithilfe der DrawTextBox-Methode und den Dropdownpfeil mithilfe der DrawDropDownButton-Methode zeichnen.

Wenn im Betriebssystem visuelle Stile aktiviert sind und auf den Clientbereich von Anwendungsfenstern angewendet werden, wird das Kombinationsfeld mit dem aktuellen visuellen Stil von DrawTextBox und DrawDropDownButton gezeichnet. Andernfalls lösen diese Methoden eine InvalidOperationException aus. Sie können den Wert der IsSupported-Eigenschaft überprüfen, um zu bestimmen, ob die Member dieser Klasse verwendet werden können.

Diese Klasse ist ein Wrapper für die Funktionen eines System.Windows.Forms.VisualStyles.VisualStyleRenderer, der auf eines der Elemente festgelegt wird, die von der System.Windows.Forms.VisualStyles.VisualStyleElement.ComboBox.DropDownButton-Klasse und der System.Windows.Forms.VisualStyles.VisualStyleElement.TextBox.TextEdit-Klasse verfügbar gemacht werden. Weitere Informationen finden Sie unter Rendering von Steuerelementen mit visuellen Stilen.

Hinweis zu Windows XP Home Edition, Windows XP Professional x64 Edition, Windows Server 2003:

Visuelle Stile werden nur von diesen Plattformen unterstützt.

Im folgenden Codebeispiel wird veranschaulicht, wie ein benutzerdefiniertes Steuerelement erstellt wird, das mithilfe der DrawTextBox-Methode und DrawDropDownButton-Methode ein Kombinationsfeld zeichnet, das auf Mausklicks reagiert.

using System;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.VisualStyles;

namespace ComboBoxRendererSample
{
    class Form1 : Form
    {
        public Form1()
            : base()
        {
            this.Size = new Size(300, 300);
            CustomComboBox ComboBox1 = new CustomComboBox();
            Controls.Add(ComboBox1);
        }

        [STAThread]
        static void Main()
        {
            // The call to EnableVisualStyles below does not affect
            // whether ComboBoxRenderer.IsSupported is true; as long as visual
            // styles are enabled by the operating system, IsSupported is true.
            Application.EnableVisualStyles();
            Application.Run(new Form1());
        }
    }

    public class CustomComboBox : Control
    {
        private Size arrowSize;
        private Rectangle arrowRectangle;
        private Rectangle topTextBoxRectangle;
        private Rectangle bottomTextBoxRectangle;
        private ComboBoxState textBoxState = ComboBoxState.Normal;
        private ComboBoxState arrowState = ComboBoxState.Normal;
        private String bottomText = "Using ComboBoxRenderer";
        private bool isActivated = false;
        private const int minHeight = 38;
        private const int minWidth = 40;

        public CustomComboBox()
            : base()
        {
            this.Location = new Point(10, 10);
            this.Size = new Size(140, 38);
            this.Font = SystemFonts.IconTitleFont;
            this.Text = "Click the button";

            // Initialize the rectangles to look like the standard combo 
            // box control.
            arrowSize = new Size(18, 20);
            arrowRectangle = new Rectangle(ClientRectangle.X +
                ClientRectangle.Width - arrowSize.Width - 1,
                ClientRectangle.Y + 1,
                arrowSize.Width,
                arrowSize.Height);
            topTextBoxRectangle = new Rectangle(ClientRectangle.X,
                ClientRectangle.Y,
                ClientRectangle.Width,
                arrowSize.Height + 2);
            bottomTextBoxRectangle = new Rectangle(ClientRectangle.X,
                ClientRectangle.Y + topTextBoxRectangle.Height,
                ClientRectangle.Width,
                topTextBoxRectangle.Height - 6);
        }

        // Draw the combo box in the current state.
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);

            if (!ComboBoxRenderer.IsSupported)
            {
                this.Parent.Text = "Visual Styles Disabled";
                return;
            }

            this.Parent.Text = "CustomComboBox Enabled";

            // Always draw the main text box and drop down arrow in their 
            // current states
            ComboBoxRenderer.DrawTextBox(e.Graphics, topTextBoxRectangle,
                this.Text, this.Font, textBoxState);
            ComboBoxRenderer.DrawDropDownButton(e.Graphics, arrowRectangle,
                arrowState);

            // Only draw the bottom text box if the arrow has been clicked
            if (isActivated)
            {
                ComboBoxRenderer.DrawTextBox(e.Graphics,
                    bottomTextBoxRectangle, bottomText, this.Font,
                    textBoxState);
            }
        }

        protected override void OnMouseDown(MouseEventArgs e)
        {
            base.OnMouseDown(e);

            // Check whether the user clicked the arrow.
            if (arrowRectangle.Contains(e.Location) &&
                ComboBoxRenderer.IsSupported)
            {
                // Draw the arrow in the pressed state.
                arrowState = ComboBoxState.Pressed;

                // The user has activated the combo box.
                if (!isActivated)
                {
                    this.Text = "Clicked!";
                    textBoxState = ComboBoxState.Pressed;
                    isActivated = true;
                }

                // The user has deactivated the combo box.
                else
                {
                    this.Text = "Click here";
                    textBoxState = ComboBoxState.Normal;
                    isActivated = false;
                }

                // Redraw the control.
                Invalidate();
            }
        }

        protected override void OnMouseUp(MouseEventArgs e)
        {
            base.OnMouseUp(e);

            if (arrowRectangle.Contains(e.Location) &&
                ComboBoxRenderer.IsSupported)
            {
                arrowState = ComboBoxState.Normal;
                Invalidate();
            }
        }
    }
}


System.Object
  System.Windows.Forms.ComboBoxRenderer

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0, 2.0

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft