Элемент управления надписью не отображается должным образом - PullRequest
0 голосов
/ 12 января 2012

У меня есть (что должно быть) очень простое приложение Windows Forms. Существует «Основная» форма, представляющая собой набор данных для ввода с кнопкой «Отправить». Когда пользователь нажимает «Отправить», я хочу отобразить вторую форму, которая является очень простой формой, на которой есть только ярлык с надписью «Пожалуйста, подождите ...». Я создал вторую форму, и в Click кнопки «Отправить» я делаю это:

Form2 f2 = new Form2();
f2.Show();
System.Threading.Thread.Sleep(3000);
f2.Hide();

Cтор формы 2:

public Form2()
{
  InitializeComponent();
  this.Text = "Form2 that is useless";
}

То, что я вижу, это Form2, но там, где должна быть метка, я вижу только ее контур в виде белого прямоугольника без текста. Выделены цвета текста и фона (черный фон на цветном фоне «Control».

Я пытаюсь понять, почему простая форма, добавленная без изменения свойств, не будет отображать элементы управления должным образом. Я добавил кнопочный элемент управления и элемент управления изображением и получил те же результаты. контур элемента управления отображается, а содержимое - нет.

Помощь

Ответы [ 2 ]

3 голосов
/ 12 января 2012

Добавить:

Shown += new EventHandler(Form2_Shown);

к центру Form2. И:

void Form2_Shown(object sender, EventArgs e)
{
    Update();
}

В своем классе.

EDIT: Это не работает Возможно, потому что Sleep выполняется перед обработчиком события Shown. Решение состоит в том, чтобы добавить:

f2.Update();

перед Sleep, вместо предыдущего решения.

На этот раз я попробовал это. Это работает.

2 голосов
/ 12 января 2012

Вы не даете Form2 шанс визуализировать себя.

Попробуйте использовать таймер на второй форме (вместо того метода, который у вас есть Sleep()), который закроет его через 3000 мсек.Запустите его в показанном событии.Закройте форму в событии Tick.

public Form2() {
  InitializeComponent();
  this.Text = "Form2 that is useless";
  timer1.Interval = 3000;
}

private void Form2_Shown(object sender, EventArgs e) {
  timer1.Start();
}

private void timer1_Tick(object sender, EventArgs e) {
  this.Close();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...