如何通过代码将元素添加到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;
}
}
}
你确定这不起作用,只是没有看到它吗?我设置了一个名为frmMain
的表单,该表单包含一个称为panel1
的Panel
。下面的代码,我只是为了设置背景颜色而进行了调整,向我展示了具有红色背景的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,我才意识到这里出了什么问题。问题是,我正在将网格添加到窗体的控件中,而我必须将其添加到主面板的控件中。感谢大家^^