Форма без полей отображает границы на мгновение, когда отображается внутри контейнера mdi - PullRequest
2 голосов
/ 12 января 2011

Обновление (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 ]

1 голос
/ 12 января 2011

Если что-то замедляет ваш основной поток пользовательского интерфейса, Windows будет рисовать форму, используя значения по умолчанию (по крайней мере в мире DVM в Vista / Windows 7), пока ваш поток не станет отзывчивым.Убедитесь, что ваш поток пользовательского интерфейса не ожидает других потоков или выполняет тяжелую обработку при первом показе формы.

1 голос
/ 05 марта 2016

У меня была та же проблема в моем приложении, и я добавил следующую строку в качестве первой строки в функции загрузки формы, чтобы исправить проблему

this.FormBorderStyle = FormBorderStyle.None;

0 голосов
/ 12 января 2011

Может зависеть, меняете ли вы FormBorderStyle при загрузке, в конструкторе или при отображении.Лучше всего сделать это в конструкторе (метод InitializeComponents).

...