首页 > 解决方案 > 从不同项目中的另一个表单打开一个表单

问题描述

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

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

我已经设置好了:

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

}

无论我尝试什么,Intellisense 总是将其变为红色。我对此有点陌生,有人可以帮助我吗?

标签: c#reportviewer

解决方案


确保您要打开的表单声明为public. 否则,从它自己的程序集外部将看不到它。

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

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

或者在代码文件顶部使用 using 语句

using APP.ABC.Reporting;

你可以打开它

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

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

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

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

推荐阅读