c# - 动态添加和删除 UserControl

标签 c# winforms

我有 UserControl,其中包含 Infragistics Graph 控件。在 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);

关于c# - 动态添加和删除 UserControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/677424/

相关文章:

c# - 字符串未被识别为有效的日期时间问题

.NET Framework 4.0 和使用 2.0 的程序集

.net - 从 ToolStripPanel 中取消停靠 ToolStrip

c# - NHibernate firebird 错误 - 索引超出范围

c# - 以编程方式删除数据 GridView 中的行标题

c# - 如何在 Web Api 中发布自定义命名方法?

c# - 在 C# 中使用句柄和系统观察器

c# - 无法使用 JsonUtility 在 Unity 5.4 中反序列化 JSON。子集合始终为空

c# - 无法使用 SSDT Visual Studio 2012 "Unable to determine the database platform type. The database may be unavailable.."比较数据库架构

.net - 突然过度使用内存