Форма без полей отображает границы на мгновение, когда отображается внутри контейнера mdi
Обновление (2011-01-17):
Я создаю форму с FormBorderStyle=None
внутри MdiContainer. Когда я показываю первую форму, даже если она уже была создана, на долю секунды она появляется с синей рамкой нормальной формы, затем она переворачивается.
В следующем примере, кликнув один раз и снова на button1, он будет время от времени показывать это поведение, хотя это очень короткий промежуток времени, поэтому я думаю, что это будет трудно увидеть на очень быстрой машине; однако в моем производственном коде с элементами управления.net сторонних производителей он показывается гораздо дольше.
Чтобы попробовать это, просто создайте новый проект и форму окна с именем Form2, добавьте кнопку в Form1, добавьте события Form1_Load и button1_Click и вставьте код. Затем нажмите кнопку 1 на некоторое время.
public partial class Form1 : Form
{
Form2 form;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
form.Visible = !form.Visible;
form.MdiParent = this;
}
private void Form1_Load(object sender, EventArgs e)
{
this.IsMdiContainer = true;
form = new Form2();
form.FormBorderStyle = FormBorderStyle.None;
}
}
Это не зависит от языка, поэтому, пожалуйста, не меняйте мои теги без веской причины.
3 ответа
У меня была та же проблема в моем приложении, и я добавил следующую строку в качестве первой строки в функции загрузки формы, чтобы устранить проблему
this.FormBorderStyle = FormBorderStyle.None;
Если что-то замедляет ваш основной поток пользовательского интерфейса, Windows будет рисовать форму, используя значения по умолчанию (по крайней мере, в мире DVM в Vista/Windows 7), пока ваш поток снова не станет отзывчивым. Убедитесь, что ваш поток пользовательского интерфейса не ожидает в других потоках и не выполняет тяжелую обработку при первом показе формы.
Это может зависеть от того, меняете ли вы FormBorderStyle на Load, в конструкторе или на Shown. Лучше всего сделать это в конструкторе (метод InitializeComponents).