如何通过代码将元素添加到windows窗体中

本文关键字:windows 窗体 添加 元素 何通过 代码 | 更新日期: 2023-09-27 18:21:58

问题说明了一切,我想在现有的windows窗体中添加一个TableLayoutPanel,我已经尝试过了:

public class Level {
    public TableLayoutPanel brickGrid;
    public Level(Form parent, int width, int height, int left, int top, int rows, int columns) {
        brickGrid = new TableLayoutPanel();
        //Code
        brickGrid.CellBorderStyle = TableLayoutPanelCellBorderStyle.InsetDouble;
        //Code
        brickGrid.SetAutoScrollMargin(2, 2);
        brickGrid.BringToFront();
        parent.Controls.Add(brickGrid);
    }
}

但它似乎不起作用:/

编辑:它没有引发任何崩溃、错误、异常或类似情况,网格只是不会出现。

以下是输出的图像:http://prntscr.com/9385e9

这是完整的代码:

namespace PingPong.Source {
public class Level {
    public TableLayoutPanel brickGrid;
    public Level(Form parent, int width, int height, int left, int top, int rows, int columns) {
        brickGrid = new TableLayoutPanel();
        brickGrid.Width = width;
        brickGrid.Height = height;
        brickGrid.Left = left;
        brickGrid.Top = top;
        brickGrid.CellBorderStyle = TableLayoutPanelCellBorderStyle.InsetDouble;
        int originalRowCount = brickGrid.RowCount;
        int originalColumnCount = brickGrid.ColumnCount;
        float columnPercentage = 100f * columns / width;
        float rowPercentage = 100f * rows / height;
        int index = 0;
        while (index <= columns) {
            brickGrid.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, columnPercentage));
            index++;
        }
        index = 0;
        while (index <= rows) {
            brickGrid.RowStyles.Add(new RowStyle(SizeType.Percent, rowPercentage));
            index++;
        }
        index = 0;
        while (index < originalRowCount) {
            brickGrid.RowStyles.RemoveAt(originalRowCount - index + 1);
            index++;
        }
        index = 0;
        while (index < originalColumnCount) {
            brickGrid.ColumnStyles.RemoveAt(originalColumnCount - index + 1);
            index++;
        }
        brickGrid.SetAutoScrollMargin(2, 2);
        brickGrid.BringToFront();
        parent.Controls.Add(brickGrid);
        brickGrid.BackColor = System.Drawing.Color.Black;
    }
}
}

如何通过代码将元素添加到windows窗体中

你确定这不起作用,只是没有看到它吗?我设置了一个名为frmMain的表单,该表单包含一个称为panel1Panel。下面的代码,我只是为了设置背景颜色而进行了调整,向我展示了具有红色背景的backGrid控件。

   private void Form1_Load(object sender, EventArgs e)
    {
        TableLayoutPanel brickGrid = new TableLayoutPanel();
        brickGrid.CellBorderStyle = TableLayoutPanelCellBorderStyle.InsetDouble;
        brickGrid.SetAutoScrollMargin(2, 2);
        brickGrid.BringToFront();
        brickGrid.BackColor = Color.Red;
        panel1.Controls.Add(brickGrid);
    }

也许你只需要设置背景颜色,看看它是否有效,并可能通过代码来确保。

好吧,多亏了@Brian Payne,我才意识到这里出了什么问题。问题是,我正在将网格添加到窗体的控件中,而我必须将其添加到主面板的控件中。感谢大家^^