C#MDI表单通过引用传递对象

C#MDI表单通过引用传递对象,c#,object,global,pass-by-reference,mdi,C#,Object,Global,Pass By Reference,Mdi,您好,我已经创建了一个c#MDI应用程序,以使用串行端口(或USB)连接到硬件。我希望每个子表单从MDI#表单实例上创建的串行端口对象写入和接收协议信息 有没有办法让我的serialPort实例成为项目的全局实例?我只需要一个连接,但所有子窗体都必须能够访问该连接。将serialPort实例声明为公共静态,然后您可以在应用程序中的任何位置访问它。在MDI\u窗体中调用它们时,您应该在所有子窗体中添加另一个构造函数使用重载构造函数 在所有子窗体中添加第二个构造函数 public partial c

您好,我已经创建了一个c#MDI应用程序,以使用串行端口(或USB)连接到硬件。我希望每个子表单从MDI#表单实例上创建的串行端口对象写入和接收协议信息


有没有办法让我的serialPort实例成为项目的全局实例?我只需要一个连接,但所有子窗体都必须能够访问该连接。

将serialPort实例声明为公共静态,然后您可以在应用程序中的任何位置访问它。

在MDI\u窗体中调用它们时,您应该在所有子窗体中添加另一个构造函数使用重载构造函数

在所有子窗体中添加第二个构造函数

public partial class ChildForm : Form
{
    private Port _port = new Port();

    public ChildForm()
    {
        InitializeComponent();
    }

    public ChildForm(Port port) : this()
    {
        _port = port;
    }

    ...
}
在MDI_表单中调用时使用此重载

public partial class MDI_Form : Form
{
    private Port _port = new Port();

    ...

    private void ChildToolStripMenuItem_Click(object sender, EventArgs e)
    {
        ChildForm cf = new ChildForm(_port);
        cf.MdiParent = this;
        cf.Show();
    }

    ...
}