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

时间:2018-10-24 15:22:29

标签: c# windows winforms dll

我有两个程序:DesktopApp1DesktopApp2。它们都是Windows窗体,但是第一个输出到 Class库(.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();
        }
    }
}

我的期望:

用户单击表格2 button1,然后将打开一个新的表格1 (DLL)窗口,执行generate方法。

实际发生的情况:

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

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

1 个答案:

答案 0 :(得分:1)

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