繁体   English   中英

动态添加和删除 UserControl

[英]Add and remove the UserControl dynamically

我有持有 Infragistics Graph 控件的 UserControl。 在 TreeView 子节点的右键单击上,我将上下文菜单设置为“创建图形”。 这将创建新图表。 这就是我要做的事情。

我对使用什么布局感到困惑。 无论是 FlowLayoutPanel 还是 TableLayoutPanel 或其他任何东西。 如果只添加一个图形 -> 图形必须占据完整的表格。 如果添加了两个图形-> 两个图形必须拆分空间等等。这只是一个接一个的格式。 即第一个图在顶部,第二个在下面到第一个..等等。

如果 UserControl 是手动更改的,它不应该影响我们显示的大小。

这是WinForm。 目前我使用 FlowLayoutPanel,我创建了具有恒定大小的面板并添加了带有 DockStyle.Fill 的 UserControl。 然后我将面板添加到 FlowLayoutPanel。

 GraphUserControl usr = new GraphUserControl();
 usr.Dock = DockStyle.Fill;

 Panel pnl = new Panel();

 pnl.Controls.Add(usr);

 flowLayoutpnl.Controls.Add(pnl);

这样做的最佳方法是什么?

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM