我有两种形式,一种是主要的,一种是有一个crystalreportviewer,另一种是用户在报告中引入了他想要的用户的ID。问题我希望用户在报告加载信息之前引入ID,因此当用户在报告加载信息之前单击CreateReport按钮时,我创建了一个新表单来引入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);
}
答案 0 :(得分:4)
的ShowDialog(...)
答案 1 :(得分:2)
当您需要无模式窗体时,使用Form.show()。因此,当您调用show时,它会将表单设置为在其上运行,然后继续执行您调用该节目的代码。
由于您要阻止用户输入和代码执行,直到他们处理您的报告ID表单,您需要一个模式表单。因此,请查看Form.ShowDialog(),它将阻止执行,直到表单被解除,然后将为您提供一个DialogResult,您可以从中检索用户的结果,然后从表单实例获取任何表单特定信息。 Here is the msdn for ShowDialog()