728x90
반응형
728x170
■ GroupBox 클래스에서 테두리 색상을 설정하는 방법을 보여준다.
▶ 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
}
}
728x90
반응형
그리드형(광고전용)
'C# > WinForm' 카테고리의 다른 글
[C#/WINFORM] 윈폼(WinForm)에서 콘솔(Console) 사용하기 (0) | 2018.03.22 |
---|---|
[C#/WINFORM] BitBlt 함수를 사용해 비트맵 복사하기 (0) | 2018.03.15 |
[C#/WINFORM] PropertyGrid 클래스 : 이미지 목록을 사용해 항목 값 선택하기 (0) | 2018.03.04 |
[C#/WINFORM] PropertyGrid 클래스 : 목록을 사용해 항목 값 선택하기 (0) | 2018.03.04 |
[C#/WINFORM] PropertyGrid 클래스 사용하기 (0) | 2018.03.04 |
[C#/WINFORM] Form 클래스 : 폼 닫히는 것을 방지하기 (0) | 2018.03.04 |
[C#/WINFORM] 크로스 스레드(Cross Thread) 처리하기 (0) | 2018.03.04 |
[C#/WINFORM] 크로스 스레드(Cross Thread) 처리하기 (0) | 2018.03.04 |
[C#/WINFORM] USB 제어하기 (0) | 2018.03.03 |
[C#/WINFORM] 폼 위치 설정하기 (0) | 2018.03.03 |
댓글을 달아 주세요