![](/img/trans.png)
[英]Add/Remove panel controls by clicking button on dynamically added 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.