我有UserControl,它拥有Infragistics Graph控件。在TreeView子节点的右键单击中,我将上下文菜单设置为“Create Graph”。这将创建新图。这是关于我将要做的事情。
我对使用什么布局感到困惑。无论是FlowLayoutPanel还是TableLayoutPanel还是其他任何东西。如果只添加一个图表 - >图必须占据完整的形式。如果添加了两个图表 - >两个图形必须分割空间等等。这只是一个接一个的格式。即第一个图表位于顶部,第二个图表位于第一个图表之后。所以。
如果手动更改UserControl,它不应影响我们显示的大小。
这是WinForm。目前我使用FlowLayoutPanel,我创建了具有常量大小的面板,并使用DockStyle.Fill添加了UserControl。然后我将Panel添加到FlowLayoutPanel。
GraphUserControl usr = new GraphUserControl();
usr.Dock = DockStyle.Fill;
Panel pnl = new Panel();
pnl.Controls.Add(usr);
flowLayoutpnl.Controls.Add(pnl);
这样做的最佳方法是什么?
答案 0 :(得分:5)
TableLayoutPanel可能是您的最佳选择,因为行高可以设置为百分比值。
private void AddControl(Control ctl)
{
tableLayoutPnl.RowCount += 1;
tableLayoutPnl.RowStyles.Add(
new RowStyle(SizeType.Percent, 100F / tableLayoutPnl.RowCount));
ctl.Dock = DockStyle.Fill;
tableLayoutPnl.Controls.Add(ctl, 0, tableLayoutPnl.RowCount - 1);
foreach (RowStyle rs in tableLayoutPnl.RowStyles)
{
rs.Height = 100F / tableLayoutPnl.RowCount;
}
}
然后您可以按如下方式调用它:
GraphUserControl usr = new GraphUserControl();
AddControl(usr);