问题就是这样,我想在现有的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;
}
}
}
答案 0 :(得分:1)
你确定这不起作用,而你却看不到它吗?我设置了一个名为frmMain
的表单,其中包含一个名为Panel
的{{1}}。下面的代码,我只是调整设置背景颜色,向我显示了带有红色背景的panel1
控件。
backGrid
也许您只需要设置背景颜色以查看它是否有效并可能逐步完成代码以确保。
答案 1 :(得分:0)
好的,我知道这里出了什么问题,感谢@Brian Payne。问题是当我不得不将它添加到主要的Panel时,我将网格添加到Form的控件中。谢谢大家^^