내보내기(0) 인쇄
모두 확장
이 문서는 기계로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오. 추가 정보
번역
원본

ComboBoxRenderer 클래스

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

System.Object
  System.Windows.Forms.ComboBoxRenderer

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

public sealed class ComboBoxRenderer

ComboBoxRenderer 형식에서는 다음과 같은 멤버를 노출합니다.

  이름설명
Public 속성정적 멤버IsSupported나타내는 값을 가져옵니다 여부를 ComboBoxRenderer 비주얼 스타일을 사용 하는 콤보 상자를 그리는 데 클래스를 사용할 수 있습니다.
위쪽

  이름설명
Public 메서드정적 멤버DrawDropDownButton운영 체제의 현재 비주얼 스타일으로 드롭다운 화살표를 그립니다.
Public 메서드정적 멤버DrawTextBox(Graphics, Rectangle, ComboBoxState)지정 된 상태와 범위로 텍스트 상자를 그립니다.
Public 메서드정적 멤버DrawTextBox(Graphics, Rectangle, String, Font, ComboBoxState)텍스트 상자에 지정 된 상태와 범위로 지정 된 텍스트를 그립니다.
Public 메서드정적 멤버DrawTextBox(Graphics, Rectangle, String, Font, Rectangle, ComboBoxState)지정 된 상태와 범위로 지정 된 텍스트와 텍스트 범위에서 텍스트 상자를 그립니다.
Public 메서드정적 멤버DrawTextBox(Graphics, Rectangle, String, Font, TextFormatFlags, ComboBoxState)지정 된 상태와 범위로 텍스트, 텍스트 서식에서 텍스트 상자를 그립니다.
Public 메서드정적 멤버DrawTextBox(Graphics, Rectangle, String, Font, Rectangle, TextFormatFlags, ComboBoxState)지정 된 상태와 범위로 지정 된 텍스트, 텍스트 형식 및 텍스트 범위에서 텍스트 상자를 그립니다.
Public 메서드Equals(Object) 지정한 개체가 현재 개체와 같은지 여부를 확인합니다. (Object에서 상속됨)
Public 메서드GetHashCode기본 해시 함수로 작동합니다. (Object에서 상속됨)
Public 메서드GetType현재 인스턴스의 Type을 가져옵니다. (Object에서 상속됨)
Public 메서드ToString현재 개체를 나타내는 문자열을 반환합니다. (Object에서 상속됨)
위쪽

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

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

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

Windows XP Home Edition, Windows XP Professional x64 Edition, Windows Server 2003 플랫폼 참고: 비주얼 스타일은 이러한 플랫폼 에서만 지원 됩니다.

다음 코드 예제에서는 사용 하는 사용자 지정 컨트롤을 만드는 방법을 보여 줍니다.의 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

4.5, 4, 3.5, 3.0, 2.0에서 지원

.NET Framework Client Profile

4, 3.5 SP1에서 지원

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008(서버 코어 역할은 지원되지 않음), Windows Server 2008 R2(서버 코어 역할은 SP1 이상에서 지원, Itanium은 지원되지 않음)

.NET Framework 에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 다음을 참조하십시오. .NET Framework 시스템 요구 사항.

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

커뮤니티 추가 항목

추가
표시:
© 2014 Microsoft