c#怎串口关闭问题

ZHANGBINGO 2013-07-31 11:07:40
我在父窗口的panel里切换各个子窗口;现在子窗口里有serialpot串口,我现在想在切换子窗口的时候关闭已打开的串口,怎么处理(下面是加载"系统设置"子窗口的代码)
this.panel1.Controls.Clear();
系统设置 systemset = new 系统设置();
systemset.FormBorderStyle = FormBorderStyle.None;
systemset.TopLevel = false;
this.panel1.Controls.Add(systemset);
systemset.Show();
...全文
267 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
feiniao19830822 2013-08-02
  • 打赏
  • 举报
回复
在this.panel1.Controls.Clear();之前要释放子窗口中使用的串口 //先判断this.panel1中是否含有子控件(实际就是那些子窗口) 如果含有子控件,判断子控件类别,然后将子控件转成子窗口对象,再调用子窗口的关闭串口的方法就行了。 下面以Form1、Form2、Form3作为子窗体,其中Form2使用了串口。
if (this.panel1.Controls.Count > 0)
                {
                    Control ctl = this.panel1.Controls[0];
                    if (ctl is Form1)
                    {
                    }
                    else if (ctl is Form2)
                    {
                        Form2 fmChild = ctl as Form2;
                        fmChild.ClosePort();
                    }
                    else if (ctl is Form3)
                    {
                    }
                }


                this.panel1.Controls.Clear();
                Form1 systemset = new Form1();
                systemset.FormBorderStyle = FormBorderStyle.None;
                systemset.TopLevel = false;
                this.panel1.Controls.Add(systemset);
                systemset.Show(); 
feiniao19830822 2013-08-02
  • 打赏
  • 举报
回复
在this.panel1.Controls.Clear();之前要先释放[系统设置]窗口中使用的串口。
ZHANGBINGO 2013-08-02
  • 打赏
  • 举报
回复
close方法关不掉,每次重新加载时,有生成新的串口对象,老是提示串口已被占用
申江渔夫 2013-07-31
  • 打赏
  • 举报
回复
真接用SerialPort方法Close不就可以关闭串口了?
周美文 2013-07-31
  • 打赏
  • 举报
回复
我觉得有必要把问题问清楚一些
ZHANGBINGO 2013-07-31
  • 打赏
  • 举报
回复
缭绕飘渺 2013-07-31
  • 打赏
  • 举报
回复
我想他是不知道到底哪几个串口需要关闭吧

110,570

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧