【发布时间】:2026-01-15 22:55:01
【问题描述】:
我有两个程序:DesktopApp1 和 DesktopApp2。它们都是 Windows 窗体,但第一个输出到 类库 (.dll),第二个引用它。
表格 1(dll):
namespace DesktopApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void generate()
{
crystalReportViewer1.ReportSource = @"C:/Users/me/rel1.rpt";
}
}
}
表格 2:
// ...
using DesktopApp1;
namespace DesktopApp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
DesktopApp1.Form1 r = new DesktopApp1.Form1();
// The Form 1 window doesn't opens. Nothing happens.
r.generate();
}
}
}
我的期望:
用户点击 Form 2 的 button1 并打开一个新的 Form 1 (DLL) 窗口,执行 generate 方法。
实际发生的情况:
用户点击button1,鼠标光标变为加载状态,屏幕上没有任何显示。
我可能做错了什么?还有其他方法可以将 Windows 窗体转换为 DLL 并从另一个程序打开它吗?
【问题讨论】:
-
使用 Debug > Break All, Debug > Windows > Threads 并验证是否选择了主线程。查看调用堆栈窗口以了解它在做什么。当您不可避免地断定 CrystalReports 无法正常工作时,请联系 SAP 寻求支持。