728x90
반응형
WPF & C# - Grid 만들기 |
<Grid x:Name="bgGrd">
</Grid>
public MainWindow()
{
InitializeComponent();
Init();
}
void Init()
{
int numGrd = 0; // 생성된 grid 갯수
int intTotal = 9; // 생성하려는 grid 갯수
int intStartNum = 4; // 시작위치
int intGaro = 10; // 가로 열 갯수
// 가로 열 생성
for (int colum = 0; colum < intGaro; colum++)
{
bgGrd.ColumnDefinitions.Add(new ColumnDefinition());
}
// 세로 행 생성
for (int y = 0; y < ((intTotal-1 + intStartNum ) / intGaro) + 1; y++)
{
bgGrd.RowDefinitions.Add(new RowDefinition());
// 내부 Grid 생성
for (int x = 0; x < intGaro; x++)
{
if (numGrd >= intTotal + intStartNum) break; // 전체 갯수에 도달하면 멈춤
// 가로 열 생성
if (numGrd >= intStartNum) // 시작번호보다 앞쪽은 생성하지 않음
{
makeGrid(numGrd, x, y); // grd0, grd1, grd2
makeLabel(numGrd, x, y); // lbl0, lbl1, lbl2
}
numGrd++;
}
}
}
List<Grid> lstGrd = new List<Grid>(); // grid 배열
List<Label> lstLbl = new List<Label>(); // list 배열
void makeGrid(int numGrd, int col, int row)
{
// Grid 생성
Grid grd = new Grid(); // grid 생성
grd.Name = "grd" + (++numGrd).ToString(); // 버튼명
// 각 위치에 넣기
bgGrd.Children.Add(grd);
Grid.SetColumn(grd, col);
Grid.SetRow(grd, row);
lstGrd.Add(grd); // grd 배열넣기
}
void makeLabel(int numGrd, int col, int row)
{
Label lbl = new Label(); // grid 생성
lbl.Name = "lbl" + (numGrd).ToString(); // 버튼명
lbl.Background = new SolidColorBrush(Colors.LightGray);
lbl.BorderBrush = new SolidColorBrush(Colors.Red);
lbl.BorderThickness = new Thickness(1);
lbl.Padding = new Thickness(0);
lbl.Content = lbl.Name;
// 각 위치에 넣기
bgGrd.Children.Add(lbl);
Grid.SetColumn(lbl, col);
Grid.SetRow(lbl, row);
lstLbl.Add(lbl); // List 배열넣기
}
Grid를 원하는갯수대로, 원하는 위치부터 시작해서 배치하려고 만들었다.
가장 기본적인 Grid 이지만 입맛에 맞게 만들기에는 손이 많이 간다.
내가 원하는대로 이렇게 만들어 놓지 않으면 나중에 뭐하나 만들려고 해도 정말 한참 걸릴듯하다.
728x90
반응형
'Programing (프로그래밍) > WPF & C# (C Sharp)' 카테고리의 다른 글
WPF & C# - ComboBox & Enum 사용법 ( 콤보박스, 드롭박스, DropBox ) (0) | 2021.04.12 |
---|---|
WPF & C# - List<string> 동적 배열 ( 리스트 / array / dictionary ) (0) | 2021.03.23 |
WPF & C# - TextBox 에서 ContextMenu 변경하기 ( SelectedText / 텍스트선택 / 마우스우클릭메뉴 ) (0) | 2021.03.17 |
WPF & C# - RoundButton ( 둥근버튼 만들기 / CornerRadius / Style ) (0) | 2021.03.10 |
WPF & C# - struct 구조체 (0) | 2021.03.03 |
WPF & C# - Interlocked ( 멀티쓰레딩에서 변수 변경 시 필수 / lock 대체 / 멀티쓰레드 / MultiThread / Threading ) (0) | 2021.02.18 |
WPF & C# - TextBoxWaterMark ( 워터마크 / 배경글자 / 텍스트박스 ) (0) | 2021.02.17 |
WPF & C# - 비동기 이벤트 - BackgroundWorker ( 백그라운드워커 / ChangedEvent / Completed / Event ) (0) | 2021.02.04 |