C# Winform : Detect Resize (크기 변화 감지)
알게된 배경
운영체제 별로 화면의 화소 사이즈가 다르며, 또 사용자에 따라서 편한 크기가 있다. 이 때문에 동적으로 크기를 바꿔줘야 한다. 때문에 창의 크기가 편할때 이를 감지를 하는 것은 제품을 만들기 위해서 중요한 문제일 수 있다.
물론 이쁘고 동적인 UI를 만든다면, 가능하면, WPF를 쓰는 방법도 현명한 선택이 될 수 있다.
소스코드
참조한 문서에 의하면, 별로 안어렵다고 한다. 기존에 크기 변화를 감지하는 메서드를 override를 하여서 추가 시킬 수 있다. 아래의 소스코드는 생성된 초기 디자인에서 코드보기를 한뒤에 작성하였다.
// Proect name = TestResize
using System;
using System.Windows.Forms;
namespace TestResize
{
public partial class Form1 : Form
{
public ResizeForm()
{
InitializeComponent();
mLastState = this.WindowState;
}
private FormWindowState mLastState;
protected override void OnClientSizeChanged(EventArgs e)
{
// 폼의 크기가 바뀔때마다 인식
if (this.WindowState != mLastState)
{
// 최대, 최소, 보통 등 상태가 변할때 마다 실행됨
mLastState = this.WindowState;
OnWindowStateChanged(e);
}
else
{
Console.WriteLine("Detect resize: {0}, {1}", Size.Width, Size.Height);
}
base.OnClientSizeChanged(e);
}
protected void OnWindowStateChanged(EventArgs e)
{
Console.WriteLine("Window State: {0}", WindowState);
}
}
}
빌드로 실행하기 전에 프로젝트 속성의 옵션 항목중에 "응용 프로그램" --> "출력형식" --> "콘솔 응용프로그램"으로 해야 콘솔창을 통해 코드가 작동이 되는지 확인할 수 있다.
참조자료
'C#' 카테고리의 다른 글
C# .NET : SQLLocalDB (1) 개요와 오류사례 (0) | 2018.03.23 |
---|---|
C# : this와 base (0) | 2018.02.20 |
C# : Queue VS ConcurrentQueue (0) | 2018.02.02 |
C# : 닷넷에서 Broadcast UDP를 보내기(1) (0) | 2018.01.29 |
C# : const vs readonly (0) | 2017.10.25 |