【发布时间】:2012-06-05 23:23:00
【问题描述】:
我有一个对话框表单,其中混合了设计时和运行时添加的控件。这些控件中的每一个都托管在面板中。每个面板都有 FillStyle.Top 集。
在运行时,我将 UserControl 添加到面板:
public NetworkDiscoveryDialog(CSNetworkDiscovery networkDiscovery) : this()
{
NetworkDiscovery = networkDiscovery;
SnmpCommunitiesUserControl = new SnmpCommunitiesUserControl(NetworkDiscovery.SnmpCommunitiesSetting);
panel2.Controls.Add(SnmpCommunitiesUserControl);
}
public partial class SnmpCommunitiesUserControl : UserControl
{
public SnmpSetting SnmpSetting { get; set; }
public SnmpCommunitiesUserControl()
{
InitializeComponent();
Anchor = (AnchorStyles.Top | AnchorStyles.Left);
Dock = DockStyle.Fill;
}
public SnmpCommunitiesUserControl(SnmpSetting snmpSetting)
: this()
{
SnmpSetting = snmpSetting;
}
}
很遗憾,SnmpCommunitiesUserControl 与设计时添加的控件的位置不同。
我试过了:
- 设置面板的边距以及内边距。
- 设置 UserControl 的边距和内边距。
- 锚点和 Dock 设置。
这些似乎对运行时添加的 UserControl 没有任何影响。
以前,我将“Location”参数传递给我的 UserControl 的构造函数。这允许我设置 UserControl 的位置,但不是可维护的解决方案。
我应该怎么做?
编辑:
我目前的解决方案是在第一个面板内嵌套第二个面板。我清除了两个面板的所有边距和填充。父面板具有 Dock.Top,其子面板具有 Dock.Fill。然后,我将孩子的左/右填充设置为 10。这会导致运行时添加的控件出现在正确的位置。不过,我对这个解决方案并不满意。
【问题讨论】:
-
@KRAZE:它是一个基于 Windows 的应用程序。
-
我的错,我不知道为什么我没有看到我的大脑正在查看 aspnet.. 对此感到抱歉..