Отображать форму из основной формы при запуске - PullRequest
0 голосов
/ 30 декабря 2011

Я хочу отображать маленькую форму при запуске программы.Это код:

private void Form1_Load(object sender, EventArgs e)
{
    this.Opacity = 0;
    InitForm init = new InitForm();
    init.Show();
    init.BringToFront();
    comm = init.Start();
    this.Opacity = 100;
}

Метод Start() рисует несколько строк в списке на InitForm.

У меня две проблемы:

  1. Когда программа запускается, окно списка не заполняется, я просто получаю курсор ожидания, затем отображается основная форма и поле заполняетсяв то же время
  2. InitForm находится за основной формой.Как мне вывести его на фронт?

Ответы [ 4 ]

1 голос
/ 30 декабря 2011

Невозможно увидеть ListBox в этом коде.Но рисование не происходит до тех пор, пока поток пользовательского интерфейса снова не будет работать, после того как ваш обработчик события Load завершит работу.Это также означает, что назначение Opacity ничего не делает.

Проблема Z-порядка (частично) также вызвана этим, основная форма еще не видна, поэтому BringToFront () не работает.Используйте либо Show (this), чтобы InitForm было собственным окном, которое всегда отображается спереди в главной форме (рекомендуется), либо используйте вместо него событие Shown.

0 голосов
/ 30 декабря 2011

Вы можете вывести форму Init на передний план, установив это свойство

init.TopMost=true 

У меня это сработало, зацени,

0 голосов
/ 30 декабря 2011

Вы должны загрузить вторичную форму в параллельном потоке.Итак, в обработчике событий загрузки Form1 вы запускаете второй поток, показывая Form2.

0 голосов
/ 30 декабря 2011
When the program starts, the list box is not populated, I just get the
 waiting cursor, then the main form is displayed and the box is populated
 at the same time;

Что вы ожидаете, должно произойти? Ваш поток пользовательского интерфейса занят выполнением кода ниже

this.Opacity = 0;
InitForm init = new InitForm();
init.Show();
init.BringToFront();
comm = init.Start();
this.Opacity = 100;

После освобождения отображаются заполненные формы и списки. Это ведет себя правильно на мой взгляд

this.Opacity = 0; Выше строка не будет иметь никакого эффекта, потому что поток пользовательского интерфейса сначала выполнит все строки, затем он отобразит пользовательский интерфейс, что означает, что к тому времени, когда пользовательский интерфейс покажет что-то, this.Opacity = 100; уже будет выполнено

    I want to display a small form when the program is ran. The InitForm 
is behind the main form. How do I bring it to front?

Почему бы вам не установить Small Form в качестве формы запуска и загрузить MainForm в методе загрузки малой формы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...