Значения между окнами формы в C # .NET - PullRequest
1 голос
/ 15 июня 2009

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

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

    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);



    }

Ответы [ 2 ]

4 голосов
/ 15 июня 2009

ShowDialog (...)

2 голосов
/ 15 июня 2009

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

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

...