이 문서는 기계 번역을 이용하여 번역되었습니다. 문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

ComboBoxRenderer 클래스

 

비주얼 스타일을 사용하여 콤보 상자 컨트롤을 렌더링하는 데 사용되는 메서드를 제공합니다.이 클래스는 상속될 수 없습니다.

네임스페이스:   System.Windows.Forms
어셈블리:  System.Windows.Forms.dll의 System.Windows.Forms

System.Object
System.Windows.Forms.ComboBoxRenderer

public sealed class ComboBoxRenderer

이름설명
System_CAPS_pubpropertySystem_CAPS_staticIsSupported

비주얼 스타일을 사용하여 콤보 상자를 그리는 데 ComboBoxRenderer 클래스를 사용할 수 있는지 여부를 나타내는 값을 가져옵니다.

이름설명
System_CAPS_pubmethodSystem_CAPS_staticDrawDropDownButton(Graphics, Rectangle, ComboBoxState)

운영 체제의 현재 비주얼 스타일을 사용하여 드롭다운 화살표를 그립니다.

System_CAPS_pubmethodSystem_CAPS_staticDrawTextBox(Graphics, Rectangle, ComboBoxState)

지정된 상태와 범위로 텍스트 상자를 그립니다.

System_CAPS_pubmethodSystem_CAPS_staticDrawTextBox(Graphics, Rectangle, String, Font, ComboBoxState)

지정된 텍스트를 사용하여 지정된 상태와 범위로 텍스트 상자를 그립니다.

System_CAPS_pubmethodSystem_CAPS_staticDrawTextBox(Graphics, Rectangle, String, Font, Rectangle, ComboBoxState)

지정된 텍스트와 텍스트 범위를 사용하여 지정된 상태와 범위로 텍스트 상자를 그립니다.

System_CAPS_pubmethodSystem_CAPS_staticDrawTextBox(Graphics, Rectangle, String, Font, Rectangle, TextFormatFlags, ComboBoxState)

지정된 텍스트, 텍스트 형식 및 텍스트 범위를 사용하여 지정된 상태와 범위로 텍스트 상자를 그립니다.

System_CAPS_pubmethodSystem_CAPS_staticDrawTextBox(Graphics, Rectangle, String, Font, TextFormatFlags, ComboBoxState)

지정된 텍스트와 텍스트 형식을 사용하여 지정된 상태와 범위로 텍스트 상자를 그립니다.

System_CAPS_pubmethodEquals(Object)

지정한 개체가 현재 개체와 같은지 여부를 확인합니다. (Object에서 상속됨.)

System_CAPS_pubmethodGetHashCode()

기본 해시 함수로 작동합니다. (Object에서 상속됨.)

System_CAPS_pubmethodGetType()

현재 인스턴스의 Type을 가져옵니다.(Object에서 상속됨.)

System_CAPS_pubmethodToString()

현재 개체를 나타내는 문자열을 반환합니다.(Object에서 상속됨.)

ComboBoxRenderer 클래스는 운영 체제의 현재 비주얼 스타일을 사용하여 콤보 상자 컨트롤을 렌더링하는 데 사용할 수 있는 static 메서드 집합을 제공합니다.컨트롤 렌더링이란 컨트롤의 사용자 인터페이스를 그리는 작업을 말합니다.현재 비주얼 스타일의 모양과 같은 사용자 지정 컨트롤을 그릴 경우 유용합니다.콤보 상자를 그리려면 DrawTextBox 메서드를 사용하여 텍스트 상자를 그리고 DrawDropDownButton 메서드를 사용하여 드롭다운 화살표를 그립니다.

운영 체제에서 비주얼 스타일이 사용되고 비주얼 스타일이 응용 프로그램 창의 클라이언트 영역에 적용되면 DrawTextBoxDrawDropDownButton은 현재 비주얼 스타일을 사용하여 콤보 상자를 그립니다.그렇지 않으면 이 두 메서드는 InvalidOperationException을 throw합니다.이 클래스의 멤버를 사용할 수 있는지 여부를 확인하려면 IsSupported 속성의 값을 확인합니다.

이 클래스는 System.Windows.Forms.VisualStyles.VisualStyleElement.ComboBox.DropDownButtonSystem.Windows.Forms.VisualStyles.VisualStyleElement.TextBox.TextEdit 클래스에서 노출한 요소 중 하나로 설정된 System.Windows.Forms.VisualStyles.VisualStyleRenderer의 기능을 래핑합니다.자세한 내용은 비주얼 스타일을 사용하여 컨트롤 렌더링을 참조하십시오.

WinXpFamily

비주얼 스타일은 이러한 플랫폼에서만 지원됩니다.

다음 코드 예제에서는 DrawTextBoxDrawDropDownButton 메서드를 사용하여 마우스 클릭에 응답하는 콤보 상자를 그리는 사용자 지정 컨트롤의 작성 방법을 보여 줍니다.

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();
            }
        }
    }
}

.NET Framework
2.0 이후에 사용 가능

이 형식의 모든 public static (Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

맨 위로 이동
표시: