일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Github
- dataframe
- string
- GIT
- Google Spreadsheet
- c#
- gas
- hive
- PostgreSQL
- Kotlin
- math
- list
- PySpark
- Python
- Google Excel
- numpy
- Apache
- Excel
- django
- array
- Tkinter
- 파이썬
- google apps script
- SQL
- matplotlib
- Mac
- Redshift
- Java
- PANDAS
- Today
- Total
달나라 노트
C# : Form ClientSize (Window 사용가능한 영역 크기) 본문
Form 객체를 이용해서 Window를 한번 띄워봅시다.
using System;
using System.Windows.Forms;
class MyProgram
{
public static void Main()
{
Form fm = new Form();
fm.Width = 500;
fm.Height = 300;
Application.Run(fm);
}
}
그러면 위같은 Window가 뜹니다.
코드를 보면 Form의 가로 길이(Width)는 500, 세로 길이(Height)는 300으로 설정했습니다.
그래서 나타나는 Window의 크기도 가로 500, 세로 300의 길이를 가지고 있죠.
근데 여기서 길이를 의미할 때에는 한 가지 주의할 점이 있습니다.
가로 길이 500, 세로 길이 300 이라는 것은 Window 전체의 크기를 의미합니다.
500과 300은 위 이미지에서 빨간색으로 표시한 부분의 길이입니다.
Window에는 최소화, 최대화, 종료 버튼 등이 있는 상태표시줄과 Window의 테두리 등 여러 가지 요소들이 존재합니다.
세로 길이를 보시면 상태표시줄까지 빨간색으로 표시되어있죠.
따라서 300이라는 Height값은 상태표시줄까지 포함한 Window 전체의 세로 길이를 의미합니다.
우리가 나중에 Window에 여러 요소들을 배치할 때 이 요소들이 상태표시줄에 가려지면 당연히 안될겁니다.
그러면 우리는 Window에서 상태표시줄, Window의 테두리 등을 제외한 실제 사용 가능한 영역의 크기를 알아야합니다.
이를 위해선 Form 객체의 ClientSize를 이용하면 됩니다.
using System;
using System.Windows.Forms;
class MyProgram
{
public static void Main()
{
Form fm = new Form();
fm.Width = 500;
fm.Height = 300;
String clientsize = fm.ClientSize.ToString();
Label lbl = new Label();
lbl.Parent = fm;
lbl.Width = 300;
lbl.Height = 20;
lbl.Text = $"ClientSize = {clientsize}";
Application.Run(fm);
}
}
위 코드는 Window에 ClientSize를 표시해주도록 하는 코드입니다.
보시면 Window의 크기는 가로 500, 세로 300으로 지정했으나
ClientSize는 가로 484, 세로 261로 표시되는걸 알 수 있죠.
이것은 ClientSize 값은 Window의 상태표시줄, 테두리 등 기타 가용영역을 제외하고 우리가 사용할 수 있는 영역의 크기만을 나타내주기 때문입니다.
실제 Form을 다루다보면 Form 자체의 크기보다는 ClientSize가 더 유용하고 중요하게 다뤄집니다.
Form fm = new Form();
fm.Width = 500;
fm.Height = 300;
따라서 Form의 크기를 지정할 때 위처럼 Width와 Height을 지정해주는 것이 아니라 ClientSize를 지정해줄 수 있습니다.
using System;
using System.Windows.Forms;
using System.Drawing;
class CardCatch
{
public static void Main()
{
Form fm = new Form();
fm.ClientSize = new Size(300, 300);
Application.Run(fm);
}
}
- fm.ClientSize = new Size(300, 300);
위 코드를 보면 ClientSize를 직접 지정하고 있습니다.
여기서 Width, Height값을 따로 주는게 아니라 Size 객체에 담아 전달해야한다는 것에 주의합시다.
위 코드를 실행하면 이처럼 ClientSize의 가로 길이가 300, 세로 길이가 300인 Window가 만들어집니다.
using System;
using System.Windows.Forms;
class MyProgram
{
public static void Main()
{
Form fm = new Form();
fm.Width = 500;
fm.Height = 300;
String clientsize = fm.ClientSize.ToString();
Button btn = new Button();
btn.Parent = fm;
btn.Text = "Test Button";
btn.Size = fm.ClientSize;
Application.Run(fm);
}
}
이러한 ClientSize값을 이용하면 위처럼 버튼의 크기를 Window의 가용영역에 완전히 딱 맞도록 설정할 수도 있습니다.
- 참고
'C# > C#' 카테고리의 다른 글
C# : VisualStudio 참조 추가하기 (0) | 2022.04.20 |
---|---|
C# : Timer (타이머 class) (0) | 2022.04.20 |
C# : Math.Exp (자연상수의 거듭제곱) (0) | 2022.04.18 |
C# : Math.Truncate (소수점 삭제) (0) | 2022.04.18 |
C# : Math.Log, Math.Log10 (Log, Log10, LogE) (0) | 2022.04.18 |