C# 表单用户控制面板重叠
我有两种形式——形式“主要”和形式“警报” 我已经从“警报”改为“用户控制” 下面是“main”形式的代码C# 表单用户控制面板重叠,c#,winforms,C#,Winforms,我有两种形式——形式“主要”和形式“警报” 我已经从“警报”改为“用户控制” 下面是“main”形式的代码 alert=newalertform(); alert.TopLevel=false; alert.Visible=true; this.pnlData.Controls.Add(警报); alert.cancelled+=新事件处理程序(按钮取消单击); alert.Show(); pnlData是“主”窗体内的面板 当我尝试运行时,userControl像这样重叠 如何解决这个问题
alert=newalertform();
alert.TopLevel=false;
alert.Visible=true;
this.pnlData.Controls.Add(警报);
alert.cancelled+=新事件处理程序(按钮取消单击);
alert.Show();
pnlData是“主”窗体内的面板
当我尝试运行时,userControl像这样重叠
如何解决这个问题?
如何在pnlData中将userControl置于标签和文本框前面?我可以重现您的问题。这是摆脱它的代码:
public Form1() // constructor
{
InitializeComponent();
Form f = new Form2();
f.TopLevel = false;
panel1.Controls.Add(f);
f.BringToFront();
// Edit: if you want to change Top - do similar thing to Y
f.Location = new Point((int)(panel1.Size.Width / 2 - f.Size.Width / 2), 0);
f.Show();
}
完美工作-表单正在面板内部移动注意,您的“对话框”只是作为控件(而不是对话框/窗口!)添加到pnlData控件中。阅读中有关如何正确操作的备注和示例部分。这是一个简单的Z顺序问题。添加
alert.BringToFont()代码>设置TopLevel=false在这里不是一个好主意。我尝试删除TopLevel
并添加alert.BringToFont()代码>但错误无法将顶级控件添加到控件。
@hanspassant请勿同时执行这两项操作。如果不指定TopLevel,则不要调用Controls.Add()您的解决方法很简单:control.BringToFront
。确保您的警报实际上是一个控件,而不是表单要居中于何处?表单2,如何将表单2定位在屏幕的中心f.Location=新点((int)(panel1.Size.Width/2-f.Size.Width/2),(panel1.Size.Height/2-f.Size.Height/2))代码>现在一切正常,非常感谢@T.S
public Form1() // constructor
{
InitializeComponent();
Form f = new Form2();
f.TopLevel = false;
panel1.Controls.Add(f);
f.BringToFront();
// Edit: if you want to change Top - do similar thing to Y
f.Location = new Point((int)(panel1.Size.Width / 2 - f.Size.Width / 2), 0);
f.Show();
}