WPF & C# - Grid 만들기

2021. 3. 8. 23:32Programing (프로그래밍)/WPF & C# (C Sharp)

728x90
반응형
 WPF & C# - Grid 만들기

makeGrid.zip
0.04MB
makeGrid.exe
0.01MB

 

 

    <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
반응형