Как восстановить форму по умолчанию после взаимодействия с пользователем - PullRequest
2 голосов
/ 13 июля 2011

Я хотел получить представление моей формы по умолчанию после некоторого взаимодействия с пользователем.Другими словами, после некоторых изменений, которые были внесены пользователем, какая команда вернет форму в исходное всплывающее окно?У меня есть много элементов управления и вычислений, поэтому я не хочу переходить к элементу управления один за другим и устанавливать для них значение NULL или значение по умолчанию.Было бы здорово, как если бы я инициировал форму еще раз, кое-как ...

Ответы [ 3 ]

7 голосов
/ 13 июля 2011

Вы можете попробовать очистить элементы управления в форме, а затем вызвать метод InitializeComponent().

while (Controls.Count > 0)
{
    Controls[0].Dispose();
}
InitializeComponent();

РЕДАКТИРОВАТЬ:

Другой вариант, который не будетпричиной каких-либо проблем с производительностью будет использование привязки данных.Создайте объект данных, который сопоставляет один к одному со всеми полями, которые вы хотите сбросить, а затем, когда пришло время сбросить форму, просто установите для источника данных вашей формы новый экземпляр объекта данных.

4 голосов
/ 13 июля 2011

Вы также можете сделать что-то подобное, предполагая, что вы просто хотите сбросить текст на элементах управления.Вызовите следующую функцию с помощью ResetControl (this), где «this» - это ваша форма.Вы хотели бы проверить тип элемента управления, чтобы у вас не было непредвиденных последствий, таких как стирание текста метки.

private void ResetControl(Control control)
{
  if (control.HasChildren)
    foreach (var ctl in control.Controls)
      ResetControl((Control)ctl);

  if (control is TextBox)
    control.ResetText();
}

Хотя я все еще думаю, что у вас будет гораздо меньше ошибок, если вы просто удалите форму и создадите новую (вы можете загрузить исходную форму, которая загружает пользовательский элемент управления, и удалить элемент управления пользователя).или используйте форму контейнера mdi для загрузки другой формы или чего-либо еще).

0 голосов
/ 16 января 2013

Лучший способ - написать персонализированную функцию ResetForm() и сбросить каждый компонент отдельно:

для TextBox ==> TextBox1.Text = "default text";

для ComboBox ==> ComboBox1.ResetText();

для DataGridView ==> DataGridView1.RowCount=1;

и т.д ...

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