C# 在运行时添加UserControl时,如何将其定位在面板内部?
我有一个对话框窗体,它混合了设计时和运行时添加的控件。每个控件都位于面板中。每个面板都有填充样式。顶部设置 在运行时,我将UserControl添加到面板:C# 在运行时添加UserControl时,如何将其定位在面板内部?,c#,winforms,layout,panel,C#,Winforms,Layout,Panel,我有一个对话框窗体,它混合了设计时和运行时添加的控件。每个控件都位于面板中。每个面板都有填充样式。顶部设置 在运行时,我将UserControl添加到面板: public NetworkDiscoveryDialog(CSNetworkDiscovery networkDiscovery) : this() { NetworkDiscovery = networkDiscovery; SnmpCommunitiesUserControl = new SnmpCommunities
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;
}
}
不幸的是,SNMPCommunities用户控件与设计时添加的控件的位置不同
我试过:
- 设置面板的边距以及填充
- 设置UserControl的边距和填充
- 锚定和停靠设置
您应该自己设置位置和大小属性,也可以设置新控件的Dock属性。另一种方法是将主机面板更改为StackLayoutPanel或TableLayoutPanel。如果要设置绝对位置,应将Location属性设置为您的位置,并将dock设置为none。
control.Location=新点(x,y)
control.Dock=DockStyle.None;
@KRAZE:这是一个基于Windows的应用程序。我的坏消息是,我不知道为什么我没有意识到我的大脑在看aspnet。。很抱歉..dock属性已设置为Fill。UserControl将由多个对话框使用。因此,我需要能够动态推断位置,以防止维护问题。我不想为每个对话框手动设置UserControl的Location属性。我的理解是,如果对话框无法调整大小,一组面板的功能应该与TableLayoutPanel的功能类似。这是错误的吗?您是正确的,但是控件树不是很容易填充的。控件的顺序对正确布局非常重要。请尝试通过“视图->其他窗口->文档大纲”调查表单设计器生成的表单布局。它会给你提供很多信息。