Как открыть форму как ShowDialog (); в первый раз открываю форму, но Show (); второй раз открываю ту же форму - PullRequest
0 голосов
/ 07 августа 2020
Forms.inDepthScootForm.passProductDetails(strProductName, strProductDescription);
   
Forms.inDepthScootForm.ShowDialog();

Forms.eScootForm.Hide();

Я пытаюсь открыть inDepthScootForm и скрыть / закрыть eScootForm. Я пытаюсь открыть эту форму как ShowDialog (); в первый раз открываю, но как Show (); в последующие разы я открываю эту форму.

Если я воспользуюсь этим методом, система будет sh при втором открытии формы

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 07 августа 2020

ShowDialog вернется к вашей функции только после того, как она будет закрыта, поэтому функция скрытия вызывается после закрытия / завершения диалогового окна.

Сначала, возможно, создайте его как объект new, который способ уникальности каждого экземпляра формы (при условии, что вы не хотите хранить на нем данные) , затем убедитесь, что он закрыт и утилизирован, как только вы закончите с ним. Это должно исправить ошибку окна, которое уже открыто.

Итак, сначала скройте свою первую форму, а затем отобразите ту, которую вы sh хотите отобразить. Если вы используете здесь using, тогда, если showdialog выдает исключение, оно все равно будет удалено.

using(var win = new Forms.inDepthScootForm())) {
    win.passProductDetails(strProductName, strProductDescription);
    Forms.eScootForm.Hide();
    win.ShowDialog();
} //win gets disposed as soon as the program leaves this

Forms.eScootForm.Show();

Если это не то, что вы хотите, укажите c, ie: «Когда Я показываю x-окно во второй раз. Я хочу, чтобы оно отображалось как шоу, а не как showdialog », но если вы это сделаете, убедитесь, что вы показали нам родителя, который на самом деле вызывает это окно и открыт, пока вы это делаете.

Не могли бы вы отредактировать свой вопрос, включив в него строку и в каком окне она выдает ошибку?

0 голосов
/ 07 августа 2020

Я полагаю, у вас есть такой же экземпляр вашего «eScootForm». Возможно, попробуйте создать новый экземпляр, когда вы показываете и удаляете его, когда диалоговое окно закрыто, как в примере ниже:

public void ShowMyDialogBox()
{
   var testDialog = new Form2();

   // Show Form2 as a modal dialog
   testDialog.ShowDialog(this);

   // Do things when the dialog is closed
   this.txtResult.Text = testDialog.TextBox1.Text;

   // then dispose it
   testDialog.Dispose();
}
...