【问题标题】:How to send a serialport as a parameter from one window form to another window form?如何将串行端口作为参数从一个窗口窗体发送到另一个窗口窗体?
【发布时间】:2016-05-17 08:16:37
【问题描述】:

我正在使用串行端口。我有两个窗口窗体,我需要在这两种窗体中使用 serialPort。如何将串行端口从一种形式发送到第二种形式作为参数?我的代码如下:

namespace SimpleSerial
{
  public partial class Form1 : Form
  {
    Form2 pp = new Form2()

      public Form1()
      {
        InitializeComponent();
        pp.ShowDialog();
      }
      private void buttonStart_Click(object sender, EventArgs e)
      {
        serialPort1.PortName = "Com3";       
        serialPort1.BaudRate = 9600;

和第二种形式的代码:

namespace SimpleSerial
{
  public partial class Form2 : Form
    {
      public Form2()
        {
          InitializeComponent();
          getAvailablePorts();
        }

【问题讨论】:

标签: c# winforms serial-port


【解决方案1】:

首先在form2中创建参数化构造函数

public Form2(SerialPort SP)
{
     InitializeComponent();
     serialPort2 = SP;
}

现在将 SerialPort 从 form1 传递给 form2

Form2 frm = new Form2(serialPort1);
frm.ShowDialog();

如此form2serialPort2会得到form1serialPort1的所有属性

【讨论】:

    【解决方案2】:

    通过 Form2 的构造函数传递端口:

    public partial class Form2 : Form
    {
      private readonly SerialPort Port;
      public Form2(SerialPort Port)
      {
        InitializeComponent();
        this.Port = Port;
      }
    }
    

    现在您可以在 Form2 中使用端口了。

    在您的 Form1 中创建 Form2 期间,像这样传递端口:

    public partial class Form1 : Form
    {
      private SerialPort Port;
      public Form1()
      {
        InitializeComponent();
        Port = new SerialPort();
        Form2 pp = new Form2(Port);
        pp.ShowDialog();
      }
    }
    

    请注意,在 C# 中对象是通过引用传递的。也就是说,如果你关闭 Form1 中的 Port,Form2 中的 Port 也会关闭(因为它是同一个对象)!

    【讨论】:

      猜你喜欢
      • 2012-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-08
      相关资源
      最近更新 更多