【发布时间】:2016-10-11 11:58:12
【问题描述】:
您好,我创建了一个 c# MDI 应用程序以使用串行端口(或 USB)连接到硬件。我希望每个 Child_Form 都从 MDI_Form 实例上创建的 Serial_port 对象写入和接收协议信息。
有没有办法让我的 serialPort 实例对我的项目是全局的?我只想要一个连接,但所有子表单都必须有权访问连接。
【问题讨论】:
标签: c# object global pass-by-reference mdi
您好,我创建了一个 c# MDI 应用程序以使用串行端口(或 USB)连接到硬件。我希望每个 Child_Form 都从 MDI_Form 实例上创建的 Serial_port 对象写入和接收协议信息。
有没有办法让我的 serialPort 实例对我的项目是全局的?我只想要一个连接,但所有子表单都必须有权访问连接。
【问题讨论】:
标签: c# object global pass-by-reference mdi
您应该在所有子窗体中添加另一个构造函数,当在 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();
}
...
}
【讨论】:
将 serialPort 实例声明为 public static,然后您可以在应用程序的任何位置访问它。
【讨论】: