카테고리 없음

윈폼, 테이블레이아웃 - 레이블 동적으로 더하기

코딩하는고릴라 2016. 7. 7. 11:49
반응형

우선 테이블 레이아웃에 걸린 마진, 패딩 다 0으로 만들어줘야한다.



    public partial class TableLayoutLabelAddForm : Form

    {

        private const int ROW_HEIGHT = 30;


        ///*****************************컨트롤에 자식 더할 때 컨트롤 깜빡임 없애기***********************

        [DllImport("user32.dll")]

        public static extern int SendMessage(IntPtr hWnd, Int32 wMsg, bool wParam, Int32 lParam);


        private const int WM_SETREDRAW = 11;


        public static void SuspendDrawing(Control parent)

        {

            SendMessage(parent.Handle, WM_SETREDRAW, false, 0);

        }


        public static void ResumeDrawing(Control parent)

        {

            SendMessage(parent.Handle, WM_SETREDRAW, true, 0);

            parent.Refresh();

        }

        //************************************************************************



  public TableLayoutLabelAddForm (){

InitializeComponent();


SuspendDrawing(tableLayoutPanel1);


int rowIndex= AddTableRow();


            tableLayoutPanel1.Controls.Add(GetTableLabel("레이블값"), 0, rowIndex);


            ResumeDrawing(tableLayoutPanel1);

  }


        private int AddTableRow()

        {

            int index = tableLayoutPanel1.RowCount++;

            RowStyle style = new RowStyle(SizeType.Absolute, ROW_HEIGHT);

            tableLayoutPanel1.RowStyles.Add(style);

            tableLayoutPanel1.Height = (ROW_HEIGHT * tableLayoutPanel1.RowCount) + 6;

            return index;

        }


        /// <summary>

        /// 테이블레이아웃에 넣을 레이블 생성 반환

        /// </summary>

        /// <param name="Text">레이블명</param>

        /// <returns></returns>

        private Label GetTableLabel(String Text)

        {

            Label lbl = new Label();

            //추후 바인딩한 레이블만 지울수있도록 태그 삽입

            lbl.Tag = "Binded";

            lbl.Text = Text;

            lbl.AutoSize = false;

            lbl.BackColor = Color.White;

            lbl.Dock = DockStyle.Fill;

            lbl.TextAlign = ContentAlignment.MiddleCenter;

            return lbl;

        }

반응형