Повторно открыть закрытую форму, которая была показана с помощью ShowDialog()

Я делаю одну заявку, в которой есть одна основная Form FormMain и один помощник Form FormHelper.

Для понимания возьмем пример того, что в FormMain пользователь вводит заказы, и часто пользователь хочет открыть FormHelper и заполнить в нем некоторые значения.

При сохранении порядка сохраняются значения в FormMain, а также FormHelper.

Я сделал FormHelper полем в определении FormMain:

public partial class FormMain : Form
{
    FormHelper BillsForm;
}

А в конструкторе:

 public FormReceiptNew(string ReceiptNo)
    {
        InitializeComponent();
        BillsForm = new BillsForm();//just once
    }

Теперь предположим, что пользователь, заполняя FormMain, хочет ввести некоторые значения в FormHelper, он / она может нажать ALT+H, и форма будет отображаться с помощью ShowDialog() и когда это будет сделано, пользователь закроет FormHelper, и один и тот же процесс будет выполняться столько раз, сколько потребуется FormHelper.

Причина, по которой я хочу, чтобы одна и та же форма открывалась несколько раз, заключается в том, что пользователь заполняет в ней определенные значения, и я хочу сохранить значения в следующий раз, когда FormHelper снова будет показан, и когда пользователь полностью завершит работу с FormMain, значения в FormMain будут сохранены вместе со значениями в FormHelper. Поэтому, когда пользователь нажимает ALT+H каждый раз, следующий код не будет работать:

BillsForm= new FormHelper();
BillsForm.ShowDialog(); 

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

2 ответа

Решение

В основной форме сохраните ссылку на вспомогательную форму. Вы создаете экземпляр вспомогательной формы один раз (например, onLoad) и продолжаете вызывать showDialog() для того же объекта. Все поля должны быть сохранены между вызовами.

Если вы хотите сохранить эти значения в главной форме после закрытия, вы можете отправить эти значения обратно в FormHelper при создании либо через конструктор, либо через сеттеры. Из вашего вопроса уже звучит, как будто вы собираетесь хранить те значения, которые вы хотите сохранить в основной форме, поэтому установка их при создании не должна быть проблемой.

Другие вопросы по тегам