일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- viewmodel
- 안드로이드강좌
- Compose
- 코루틴
- 디자인패턴
- Rxjava
- 회고
- Coroutine
- 글또
- k8s
- kotlin강좌
- theming
- mockito
- 커스텀상태
- 스레드
- android
- Gradle
- 안드로이드스튜디오
- 자바
- 안드로이드
- 책
- 코틀린
- 알고리즘
- Kotlin
- 테스트
- 병럴프로그래밍
- ReactiveProgramming
- 병렬프로그래밍
- g 단위테스트
- 알게되는
- Today
- Total
선생님, 개발을 잘하고 싶어요.
TableLayoutPanel 사용시 col, row 레이아웃 픽셀 크기 받아오는 법 본문
TableLayoutPanel에서 해당 Col과 Row에 해당하는 Control의 사이즈를 제한해야 하는 일이 있었다.
GetControlFromPosition(int col, int row) 라는 함수가 있어서 원하는 동작을 할줄 알았는데 레이아웃 제한 크기를 반환하는 것이 아니라, 해당 레이아웃에 놓인 Control을 반환하는 함수더라.
검색력의 부족인지 잘 안찾아저서 직접 만들었다. 아래 함수는 SizeType이 Absolute와 Percent만 있다고 가정한 상태에서 레이아웃 제한 크기? 의 픽셀 사이즈를 반환하는 함수이다.
// Percent와 Absolute 인 row, col로 구성되어있다고 가정
private Size GetActualPixelSize(TableLayoutPanel panel, int col, int row)
{
if (panel.ColumnCount <= col || col < 0 || panel.RowCount <= row || row < 0) return Size.Empty;
int w = panel.Width, h = panel.Height;
int nw, nh;
// 고정 픽셀이면 width를 바로 알수 있다.
if (panel.ColumnStyles[col].SizeType == SizeType.Absolute)
{
nw = (int)panel.ColumnStyles[col].Width;
}
// 다른 요소들을 검사후 값을 알아낼 수 있다.
else
{
int another = 0;
for (int i = 0; i < panel.ColumnCount; ++i)
{
if (panel.ColumnStyles[i].SizeType == SizeType.Absolute)
another += (int)panel.ColumnStyles[i].Width;
}
nw = (int)((w - another) * (panel.ColumnStyles[col].Width / (float)100));
}
// 고정 픽셀이면 height를 바로 알수있다.
if (panel.RowStyles[row].SizeType == SizeType.Absolute)
{
nh = (int)panel.RowStyles[row].Height;
}
// 다른 요소들을 검사후 값을 알아낼 수 있다.
else
{
int another = 0;
for (int i = 0; i < panel.RowCount; ++i)
{
if (panel.RowStyles[i].SizeType == SizeType.Absolute)
another += (int)panel.RowStyles[i].Height;
}
nh = (int)((h - another) * (panel.RowStyles[row].Height / (float)100));
}
return new Size(nw, nh);
}
'개발 > c# winform' 카테고리의 다른 글
c# winform properties settings 를 활용한 손쉬운 어플리케이션 세팅 프로그래밍 (0) | 2019.01.24 |
---|---|
C# File 읽기 (0) | 2019.01.08 |
winform 기본 제공되는 커서들 이름 - 이미지 / Winform Cursors로 제공되는 놈들 (0) | 2018.09.20 |
winform 폼 종료 못하게 하기(우측 상단 엑스버튼 비활성화) (2) | 2018.09.20 |
C# Winform Form 위에 Form 올리기 (0) | 2018.09.20 |