Установить родитель формы - PullRequest
18 голосов
/ 07 февраля 2010

У меня есть форма Windows, из которой я хотел бы открыть форму состояния с надписью «Сохранение ...» и затем исчезает, когда сохранение завершено. Я хотел бы центрировать эту небольшую форму статуса в середине формы вызова. Я попытался установить для свойства «StartPosition» значение «CenterParent», но это действительно работает. Я создаю форму статуса из другой формы так:

SavingForm saving = new SavingForm();
savingForm.Show();
Thread.Sleep(500); //Someone said this is bad practice ... why?
savingForm.Close();

Разве форма звонка не будет "Родителем"? Когда я устанавливаю часы для сохранения, он говорит, что у них нет родителя.

Я пытался:

SavingForm saving = new SavingForm();
saving.Parent = this;
savingForm.Show();
Thread.Sleep(500);
savingForm.Close();

и выдает исключение «Элемент управления верхнего уровня не может быть добавлен к элементу управления».

Как мне центрировать это окно статуса в окне вызова?

Заранее спасибо

Ответы [ 2 ]

18 голосов
/ 07 февраля 2010

я бы сделал что-то вроде этого:

SavingForm saving = new SavingForm();
savingForm.ShowDialog(this);

В SavingForm я запускаю таймер в обработчике загрузки, который работает в течение 500 миллисекунд, а затем закрывает форму после завершения. Так чище. ShowDialog также заблокирует ваш пользовательский интерфейс, чтобы отображать только форму для сохранения, и не позволит пользователю ничего с этим поделать.

14 голосов
/ 07 февраля 2010

Используйте это:

saving.Show(this);

Чтобы установить владельца при отображении формы.

Редактировать: Метод ShowDialog() также имеет перегрузку, которая позволяет указать владельца, если это маршрут, по которому вы решите пойти:

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