2013-11-21 2 views
0

У меня была две формы - форма «main» и форма «alert».Форма userControl panel overlapping

Я изменил форму «предупреждение» в UserControl,

Вот код в виде «основной».

alert = new AlertForm(); 
alert.TopLevel = false; 
alert.Visible = true; 
this.pnlData.Controls.Add(alert); 
alert.Canceled += new EventHandler<EventArgs>(buttonCancel_Click); 
alert.Show(); 

pnlData представляет собой панель внутри формы "основной"

Когда я пытаюсь запустить, то UserControl перекрывается, как это,

Image1

как исправить это? Как привести userControl перед меткой и текстовым полем в pnlData?

+0

Обратите внимание, что ваш «диалог» просто добавляются в качестве контроля (! Не диалогового окна /) к вашему Контроль pnlData. Прочтите раздел «Примечания и пример» в [Документация по формату] (http://msdn.microsoft.com/en-us/library/system.windows.forms.form%28v=vs.110%29.aspx) о том, как сделайте это правильно. – elgonzo

+0

Это простая проблема с Z-порядком. Добавить 'alert.BringToFont();' Установка TopLevel = false здесь не очень хорошая идея. –

+0

Я пытаюсь удалить 'TopLevel' и добавить' alert.BringToFont(); 'но ошибка' Элемент управления верхнего уровня не может быть добавлен в элемент управления. '@HansPassant –

ответ

1

Я мог бы воспроизвести ваши проблемы. Это код, который избавился от него:

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(); 

} 

Работает идеально - форма двигается внутри панели

+0

, как вы сказали, теперь он отлично работает. но как его центрировать? –

+0

что вы хотите центрировать? –

+0

форма2, как разместить форму 2 центр экрана –