用于通过引用传递对象的 C# MDI 窗体



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

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

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

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

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

public partial class ChildForm : Form
{
    private Port _port = new Port();
    public ChildForm()
    {
        InitializeComponent();
    }
    public ChildForm(Port port) : this()
    {
        _port = port;
    }
    ...
}

在MDI_Form调用时使用此重载

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();
    }
    ...
}

最新更新