C#不同窗体如何调用同一个串口,附我写的代码,求指正
Form1用来选择com口并打开,点击一个button后跳转到Form2(主窗体),如何使Form2能调用Form1的已经打开的窗口,并使得之后的form3.4都能用Fo...
Form1用来选择com口并打开,点击一个button后跳转到Form2(主窗体),如何使Form2能调用Form1的已经打开的窗口,并使得之后的form3.4都能用
Form1代码如下:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
getAvailablePorts();
}
void getAvailablePorts()
{
String[] ports = SerialPort.GetPortNames();
comboBoxPortName.Items.AddRange(ports);
}
public void buttonOpenPort_Click(object sender, EventArgs e)
{
try
{
if (comboBoxPortName.Text == "" || comboBoxBaudRate.Text == "")
{
MessageBox.Show("Please select port settings");
}
else
{
serialPort1.PortName = comboBoxPortName.Text;
serialPort1.BaudRate = Convert.ToInt32(comboBoxBaudRate.Text);
serialPort1.Open();
buttonOpenPort.Enabled = false;
}
}
catch (UnauthorizedAccessException)
{
MessageBox.Show("Unauthorized Access");
}
this.Close();
}
}
Form2代码如下:
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
if (serialPort1.IsOpen)
{
}
}
private void Form2_Load(object sender, EventArgs e)
{
Form1 f1 = new Form1();
f1.ShowDialog();
}
private void btnOpenVedio_Click(object sender, EventArgs e)
{
Form3 f3 = new Form3();
f3.ShowDialog();
}
private void btnSimControl_Click(object sender, EventArgs e)
{
Form5 f5 = new Form5();
f5.ShowDialog();
}
private void btnCheckState_Click(object sender, EventArgs e)
{
Form4 f4 = new Form4();
f4.ShowDialog();
}
} 展开
Form1代码如下:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
getAvailablePorts();
}
void getAvailablePorts()
{
String[] ports = SerialPort.GetPortNames();
comboBoxPortName.Items.AddRange(ports);
}
public void buttonOpenPort_Click(object sender, EventArgs e)
{
try
{
if (comboBoxPortName.Text == "" || comboBoxBaudRate.Text == "")
{
MessageBox.Show("Please select port settings");
}
else
{
serialPort1.PortName = comboBoxPortName.Text;
serialPort1.BaudRate = Convert.ToInt32(comboBoxBaudRate.Text);
serialPort1.Open();
buttonOpenPort.Enabled = false;
}
}
catch (UnauthorizedAccessException)
{
MessageBox.Show("Unauthorized Access");
}
this.Close();
}
}
Form2代码如下:
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
if (serialPort1.IsOpen)
{
}
}
private void Form2_Load(object sender, EventArgs e)
{
Form1 f1 = new Form1();
f1.ShowDialog();
}
private void btnOpenVedio_Click(object sender, EventArgs e)
{
Form3 f3 = new Form3();
f3.ShowDialog();
}
private void btnSimControl_Click(object sender, EventArgs e)
{
Form5 f5 = new Form5();
f5.ShowDialog();
}
private void btnCheckState_Click(object sender, EventArgs e)
{
Form4 f4 = new Form4();
f4.ShowDialog();
}
} 展开
2个回答
展开全部
不知道你的serialPort1定义在哪
如果是在Form1里 那么加上 public static
则其他窗口可以通过Form1.serialPort1来引用它
当然 更好的是放在另一个静态类里
比如
public static class CommonRes
{
public static SerialPort serialPort1;
}
只要using了这个类的命名空间
这样任何窗体内都能用CommonRes.serialPort1来引用它
如果是在Form1里 那么加上 public static
则其他窗口可以通过Form1.serialPort1来引用它
当然 更好的是放在另一个静态类里
比如
public static class CommonRes
{
public static SerialPort serialPort1;
}
只要using了这个类的命名空间
这样任何窗体内都能用CommonRes.serialPort1来引用它
追问
Serialport1是Form1窗体从工具箱拖进来的控件,没有专门定义
追答
这种没有界面的控件 没什么拖到窗口内的意义
直接用代码写到Form1里面就行
public static SerialPort serialPort1=new SerialPort ();
这样其他地方都可以Form1.serialPort1来调用
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询