【问题标题】:C# MDI Form to Pass Object By ReferenceC# MDI 表单通过引用传递对象
【发布时间】:2016-10-11 11:58:12
【问题描述】:

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

有没有办法让我的 serialPort 实例对我的项目是全局的?我只想要一个连接,但所有子表单都必须有权访问连接。

【问题讨论】:

    标签: c# object global pass-by-reference mdi


    【解决方案1】:

    您应该在所有子窗体中添加另一个构造函数,当在 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();
        }
    
        ...
    }
    

    【讨论】:

      【解决方案2】:

      将 serialPort 实例声明为 public static,然后您可以在应用程序的任何位置访问它。

      【讨论】:

        猜你喜欢
        • 2011-07-06
        • 1970-01-01
        • 2011-03-03
        • 2013-08-11
        • 2017-09-11
        相关资源
        最近更新 更多