0

我有两种形式。表格 1 和表格 2。SerialPort 变量在 Form1.cs 中声明

    public SerialPort COM = null;

    public SerialPort GetCOMM
    {
        get { return COM; }
    }

我需要从 Form2 访问该变量。(Form1 创建 Form2)
尝试过这些方式访问串行端口

Form1 f1 = new Form1();
int result = myfunction(f1.GETCOMM);
int result = myfunction(f1.COM);

它不工作。我做错了什么?

4

2 回答 2

3

我会亲自在 Form2 上创建一个将 SerialPort 作为参数的方法,这样它就不必引用 Form1。我会做这样的事情。或者您可以创建一个自定义构造函数,例如为 Form2 注释的 jaminator,它接收 SerialPort 作为参数

表格1

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 frm2 = new Form2();
        frm2.setSerialPort(serialPort1);
        frm2.Show();
    }
}

表格2

public partial class Form2 : Form
{
    SerialPort myPort;
    public Form2()
    {
        InitializeComponent();
    }
    public void setSerialPort(SerialPort port)
    {
        myPort = port; 
    }
}

使用自定义构造函数的第二个选项

表格1

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 frm2 = new Form2(serialPort1);
        frm2.Show();
    }
}

表格2

public partial class Form2 : Form
{
    SerialPort myPort;
    public Form2( SerialPort port)
    {
        InitializeComponent();
        myPort = port; 
    }
}
于 2012-10-19T04:39:49.820 回答
0

如果两个表单都是同一个应用程序的一部分,您可以在 Program.cs 类中放置一个静态 SerialPort 对象。然后通过 Program.SerialPort 从任何地方调用它

于 2012-10-19T05:03:49.010 回答