■ GroupBox 클래스 : 테두리 색상 설정하기

----------------------------------------------------------------------------------------------------


TestProject.zip


GroupBoxEX.cs

 

 

using System.Drawing;

using System.Windows.Forms;

 

namespace TestProject

{

    /// <summary>

    /// 그룹 박스 (확장)

    /// </summary>

    public class GroupBoxEX : GroupBox

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Field

        ////////////////////////////////////////////////////////////////////////////////////////// Private

 

        #region Field

 

        /// <summary>

        /// 테두리 색상

        /// </summary>

        private Color borderColor;

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Property

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 테두리 색상 - BorderColor

 

        /// <summary>

        /// 테두리 색상

        /// </summary>

        public Color BorderColor

        {

            get

            {

                return this.borderColor;

            }

            set

            {

                this.borderColor = value;

 

                Invalidate();

            }

        }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 생성자 - GroupBoxEX()

 

        /// <summary>

        /// 생성자

        /// </summary>

        public GroupBoxEX()

        {

            this.borderColor = Color.Black;

        }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 페인트시 처리하기 - OnPaint(e)

 

        /// <summary>

        /// 페인트시 처리하기

        /// </summary>

        /// <param name="e">이벤트 인자</param>

        protected override void OnPaint(PaintEventArgs e)

        {

            Size textSize = TextRenderer.MeasureText(Text, Font);

 

            Rectangle clientRectangle = e.ClipRectangle;

 

            clientRectangle.Y += textSize.Height / 2;

 

            clientRectangle.Height -= textSize.Height / 2;

 

            ControlPaint.DrawBorder(e.Graphics, clientRectangle, this.borderColor, ButtonBorderStyle.Solid);

 

            Rectangle textRectangle = e.ClipRectangle;

 

            textRectangle.X += 6;

 

            textRectangle.Width  = textSize.Width + 1;

            textRectangle.Height = textSize.Height;

 

            e.Graphics.FillRectangle(new SolidBrush(BackColor), textRectangle);

 

            e.Graphics.DrawString(Text, Font, new SolidBrush(ForeColor), textRectangle);

        }

 

        #endregion

    }

}

 

 

MainForm.cs

 

 

using System;

using System.Drawing;

using System.Windows.Forms;

 

namespace TestProject

{

    /// <summary>

    /// 메인 폼

    /// </summary>

    public partial class MainForm : Form

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 생성자 - MainForm()

 

        /// <summary>

        /// 생성자

        /// </summary>

        public MainForm()

        {

            InitializeComponent();

        }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Private

        //////////////////////////////////////////////////////////////////////////////// Event

 

        #region 빨간색 버튼 클릭시 처리하기 - redButton_Click(sender, e)

 

        /// <summary>

        /// 빨간색 버튼 클릭시 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private void redButton_Click(object sender, EventArgs e)

        {

            this.groupBox.BorderColor = Color.Red;

        }

 

        #endregion

        #region 파란색 버튼 클릭시 처리하기 - blueButton_Click(sender, e)

 

        /// <summary>

        /// 파란색 버튼 클릭시 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private void blueButton_Click(object sender, EventArgs e)

        {

            this.groupBox.BorderColor = Color.Blue;

        }

 

        #endregion

        #region 색상 없음 버튼 클릭시 처리하기 - noColorButton_Click(sender, e)

 

        /// <summary>

        /// 색상 없음 버튼 클릭시 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private void noColorButton_Click(object sender, EventArgs e)

        {

            this.groupBox.BorderColor = SystemColors.Control;

        }

 

        #endregion

    }

}

 

----------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요