Значения между оконными формами в C# .NET

У меня есть две формы, в главной из которых есть crystalreportviewer, а в другой пользователь вводит идентификатор пользователя, которого он хочет видеть в отчете. Проблема: я хочу, чтобы пользователь ввел идентификатор до того, как отчет загрузит информацию, поэтому, когда пользователь нажимает кнопку CreateReport непосредственно перед тем, как отчет загружает информацию, я создал новую форму для введения идентификатора, проблема в том, что инструкции продолжают выполнить, даже если открыто новое окно. Я знаю, что это проблема логики, а не программирования, может быть, вы можете мне помочь =). Я сделал конструктор в форме, чтобы можно было передавать значения.

Вот код кнопки:

    private void usuariosToolStripMenuItem_Click(object sender, EventArgs e)
    {

            RPE formRPE = new RPE(); //NEW FORM CREATED
            frmRPE.Show();//RPE FORM CALLED
            this.Hide();

        //BUT IT GOES ON

            ReportDocument guantesRpt = new reporteGuantes();

            DataTable datatableGuantes = reporteguantes.obtenerTabla();
            guantesRpt.SetDataSource(datatableGuantes);





            rptViewerGuantes.ReportSource = guantesRpt;
            //  Usuariorpt.SetParameterValue("RPE", RPE);



    }

person hyeomans    schedule 14.06.2009    source источник


Ответы (2)


ПоказатьДиалог(...)

person Brad Bruce    schedule 14.06.2009

Form.show() используется, когда вам нужна немодальная форма. Поэтому, когда вы вызываете show, он настраивает форму для запуска на ней, а затем продолжает выполнять код, в котором вы вызвали show.

Поскольку вы хотите заблокировать пользовательский ввод и выполнение кода, пока они не обработают вашу форму идентификатора отчета, вам нужна модальная форма. Таким образом, посмотрите на Form.ShowDialog(), который будет блокировать выполнение до тех пор, пока форма не будет закрыта, а затем предоставит вам DialogResult, где вы можете получить результат от пользователя, а затем получить любую информацию, относящуюся к форме, из экземпляра формы. Вот msdn для ShowDialog()

person Brandon Bodnar    schedule 14.06.2009