我们可以在TableLayoutPanel中显示多个DataGridView吗?如果是的话,我们怎么能做到这一点?我在msdn上搜索,也搜索了它,但无法找到任何与我的要求。我们可以在TableLayoutPanel中显示多个DataGridView吗?
我可以动态显示多次标签,但我正在动态查找DataGridView。
任何帮助,将不胜感激。谢谢!
我们可以在TableLayoutPanel中显示多个DataGridView吗?如果是的话,我们怎么能做到这一点?我在msdn上搜索,也搜索了它,但无法找到任何与我的要求。我们可以在TableLayoutPanel中显示多个DataGridView吗?
我可以动态显示多次标签,但我正在动态查找DataGridView。
任何帮助,将不胜感激。谢谢!
尝试以下
public partial class Form1 : Form
{
const int WIDTH = 1200;
const int HEIGHT = 1200;
const int MARGIN = 200;
const int NUMBER_OF_ROWS = 2;
const int NUMBER_OF_COLS = 2;
static List<DataGridView> dgvs = new List<DataGridView>();
public Form1()
{
InitializeComponent();
this.Width = WIDTH;
this.Height = HEIGHT;
TableLayoutPanel panel = new TableLayoutPanel();
this.Controls.Add(panel);
panel.Height = HEIGHT - MARGIN;
panel.Width = WIDTH - MARGIN;
panel.ColumnCount = NUMBER_OF_COLS;
panel.RowCount = NUMBER_OF_ROWS;
for (int row = 0; row < NUMBER_OF_ROWS; row++)
{
for (int col = 0; col < NUMBER_OF_COLS; col++)
{
DataGridView newDGV = new DataGridView();
dgvs.Add(newDGV);
newDGV.Height = (HEIGHT - MARGIN)/NUMBER_OF_ROWS;
newDGV.Width = (WIDTH - MARGIN)/NUMBER_OF_COLS;
newDGV.Left = 50;
newDGV.Top = 50;
panel.Controls.Add(newDGV, col, row);
}
}
}
你怎么要孩子控制显示目前尚不清楚。你提到你可以用Label
这样做,但是你没有显示任何代码,这有助于澄清。这与DataGridView
完全一样。
正如您已经注意到的,您只能在TableLayoutPanel
“单元格”中放置单个控件。如果您希望单元格中有多个控件,则可以先将Panel
添加到TableLayoutPanel
,然后将多个子控件添加到该Panel
中。
但是,我会假设您真正需要的是TableLayoutPanel
中可变数量的列或行,然后为每个单元添加一个DataGridView
。
首先,创建TableLayoutPanel
或获取现有实例。
// If you are using an existing table layout panel, either clear the controls, rows and columns beforehand,
// or keep track of them manually and adjust accordingly.
tableLayoutPanel.Controls.Clear();
tableLayoutPanel.RowStyles.Clear();
tableLayoutPanel.ColumnStyles.Clear();
IList<DataGridView> dataGridViews = ... /* wherever you get your data grid views from */
for (int i = 0; i < dataGridViews.Count; ++i)
{
// The arguments to ColumnStyle control the size of the column.
// If you want to arrange them vertically instead of horizontally, use RowStyles instead.
// If you want a combination, you have to figure out the logic yourself.
// In case of SizeType.Percent, "width" defines a relative weight, not necessarily percent.
// If all widths are equal (no matter the value), all columns will be equally wide.
tableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, width: 1));
dataGridViews[i].Dock = DockStyle.Fill;
// This adds the data grid view into that specific cell.
tableLayoutPanel.Controls.Add(dataGridViews[i], column: i, row: 0);
}
是的。任何控件都可以放入TableLayoutPanel。 – jdweng
你可以给我看一个特别为DataGridView的例子吗?我想动态添加它。 – lucky