在另一个项目中打开另一个表单中的一个表单

时间:2018-08-07 16:45:29

标签: c# reportviewer

我有一个应用程序,其中包含以下项目:

  • APP.ABC.Main
  • APP.ABC.Reporting
  • APP.ABC.Interface

在我的APP.ABC.Main项目中,我有一个主窗体,需要在APP.ABC.Reporting中打开一个报表。我已经在APP.ABC.Main项目中设置了对APP.ABC.Reporting的引用。但是我不知道如何从Main项目中打开“报表”表单。

我已经设置好了:

private void tileSQLAcct_Click(object sender, EventArgs e)
{
    //Open up ReportTest.cs form in APP.ABC.Reporting.

}

无论我尝试什么,Intellisense始终将其变为红色。我有点陌生,有人可以帮我吗?

1 个答案:

答案 0 :(得分:3)

确保将要打开的表单声明为public。否则,它将无法从其自己的装配体外部看到。

现在,您应该可以从另一个项目或程序集中使用它打开(如果表单位于命名空间APP.ABC.Reporting中):

var frm = new APP.ABC.Reporting.ReportTest();
frm.Show(); // or .ShowDialog();

或者在代码文件的顶部带有使用声明

using APP.ABC.Reporting;

您可以使用

打开它
var frm = new ReportTest();
frm.Show(); // or .ShowDialog();

请注意,Form是一个类。首先,您必须实例化它,即使用new ReportTest()从中创建一个对象。然后,您可以调用特定于表单的ShowShowDialog例程。它们之间的区别在于,在调用Show之后,调用例程将继续,而对于ShowDialog,调用例程将等待直到窗体关闭后再恢复。

ShowDialog还返回您可以评估的结果:

if (frm.ShowDialog() == DialogResult.OK) 
{
    var result = frm.MyResult; // Where `MyResult` is supposed to be a public member.
}
相关问题