Установка родителя формы

У меня есть форма 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();

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

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

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

Ответы

Ответ 1

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

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

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

Ответ 2

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

saving.Show(this);

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

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

saving.ShowDialog(this);

Ответ 3

Если вы передаете родитель (this) Владельцу, например,

SavingForm saving = new SavingForm() { Owner = this };

затем вы можете получить доступ к свойствам и методам владельца при условии, что для их Modifier установлено значение Internal или Public (вы можете редактировать модификатор непосредственно в исходном коде или через свойства дизайнера форм - есть Modifier свойство для каждого элемента управления).

Примечание. Передача, например, saving.Show(this); или saving.ShowDialog(this);, в моем случае не помогла.