C# - 如何在 DLL 中打开 Windows 窗体

标签 c# windows winforms dll

我有两个程序:DesktopApp1DesktopApp2。它们都是 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 2button1,新的Form 1 (DLL)窗口将打开,执行生成 方法。

实际发生的情况:

用户点击button1,鼠标光标变为加载状态,屏幕上没有任何显示。

我可能做错了什么?还有其他方法可以将 Windows 窗体转换为 DLL 并从另一个程序打开它吗?

最佳答案

使用 Form.Show(...) 或 Form.ShowDialog(...) 方法。

关于C# - 如何在 DLL 中打开 Windows 窗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52972679/

相关文章:

c# - 常见事件处理的最佳实践

c# - 使用 Dapper 和 Oracle 的奇怪 SQL 性能问题

c# - 当值是列表时如何从字典中获取键,值

c# - 使用 DrawString() 时出现 GDI+ 异常

java - 以可移植的方式以编程方式打开文档

C++ 写注册表

java - 如何获取运行 "exe"消耗的内存

C# Winforms : can't create window using system. 窗口

c# - 生成基于填充对象的代码

winforms - 如何模拟 Winforms Button Click 上的 "mailto:"调用?