1

私には2つのフォームがあります。メインのフォームにはcrystalreportviewerがあり、もう1つのフォームでは、ユーザーがレポートに表示したいユーザーのIDを紹介します。レポートが情報をロードする前にユーザーにIDを紹介してもらいたいので、レポートが情報をロードする直前にユーザーが[レポートの作成]ボタンをクリックすると、IDを紹介する新しいフォームを作成しました。問題は、指示が続行されることです。新しいウィンドウが開いていても実行します。私は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);



    }
4

2 に答える 2

4

ShowDialog(...)

于 2009-06-14T21:58:41.593 に答える
2

Form.show()は、モードレスフォームが必要な場合に使用されます。したがって、showを呼び出すと、その上で実行するフォームが設​​定され、showを呼び出した場所でコードが実行され続けます。

レポートIDフォームを処理するまでユーザー入力とコード実行をブロックする必要があるため、モーダルフォームが必要です。そのため、Form.ShowDialog()を見てください。これは、フォームが閉じられるまで実行をブロックし、DialogResultを提供します。ここで、ユーザーから結果を取得し、フォームインスタンスからフォーム固有の情報を取得できます。 これがShowDialog()のmsdnです

于 2009-06-14T22:05:38.067 に答える