我有这样一个问题,其问题在于设计的思想,我不会:我想实现这么一个功能:
有3个窗口:窗口1(主窗口,含有SerialPort串口)、窗口2(由主窗口1呼出)、窗口3(由子窗口2呼出)
然后,窗口1中有一个Timer_Tick在一直调用SerialPort进行通信;
我想要的结果是:
当我利用主窗口1中的按钮呼出子窗口2,然后再利用子窗口2中的按钮呼出子窗口3时,此时窗口3要利用串口收发一些数据,这些数据可能比较大量,也比较重要;故要求此时窗口1中的SerialPort串口要给窗口3独占使用,在窗口3使用完之后,再放给主窗口1中的Timer_Tick给其他人使用。我的问题是:怎么实现上面的功能呢?????我尝试了如下办法:
1)在子窗口3中定义一个for循环,让程序在窗口3中的for循环干完之后,才跳回到主循环;
发现不行:原因是如果这样就必须调用窗口1中的SerialPort串口,就必须在窗口3中定义Form1 form1=new Form1(); 这样直接导致程序无法启动,因为主窗口1一直在被定义new Form1(); 2)把主窗口1中的SerialPort定义为静态串口:static SerialPort,这样就可以不用Form1 form1=new Form1()也可以让子窗口3使用主窗口1中的SerialPort了;
发现不行:SerialPort定义了static后,子窗口3无法访问form1.Serialport,提示为“无法使用实例引用来访问成员” 3)把主窗口1中的Timer_Tick停止掉,来执行子窗口3中的串口通讯程序(当然这时要将这些程序放到主窗口1下)
发现不行:当把主窗口1中的Timer_Tick停止掉后,程序单步调试走到子窗口2显示完毕(此时子窗口3因由窗口2呼出故也显示完毕了)后,程序便永远停止了,回不到主窗口1中Timer_Tick停止的地方。
我想了很久,到底怎么样的一种思想可以实现我上面说的功能呢?????诚恳请高手指教!!!!
有3个窗口:窗口1(主窗口,含有SerialPort串口)、窗口2(由主窗口1呼出)、窗口3(由子窗口2呼出)
然后,窗口1中有一个Timer_Tick在一直调用SerialPort进行通信;
我想要的结果是:
当我利用主窗口1中的按钮呼出子窗口2,然后再利用子窗口2中的按钮呼出子窗口3时,此时窗口3要利用串口收发一些数据,这些数据可能比较大量,也比较重要;故要求此时窗口1中的SerialPort串口要给窗口3独占使用,在窗口3使用完之后,再放给主窗口1中的Timer_Tick给其他人使用。我的问题是:怎么实现上面的功能呢?????我尝试了如下办法:
1)在子窗口3中定义一个for循环,让程序在窗口3中的for循环干完之后,才跳回到主循环;
发现不行:原因是如果这样就必须调用窗口1中的SerialPort串口,就必须在窗口3中定义Form1 form1=new Form1(); 这样直接导致程序无法启动,因为主窗口1一直在被定义new Form1(); 2)把主窗口1中的SerialPort定义为静态串口:static SerialPort,这样就可以不用Form1 form1=new Form1()也可以让子窗口3使用主窗口1中的SerialPort了;
发现不行:SerialPort定义了static后,子窗口3无法访问form1.Serialport,提示为“无法使用实例引用来访问成员” 3)把主窗口1中的Timer_Tick停止掉,来执行子窗口3中的串口通讯程序(当然这时要将这些程序放到主窗口1下)
发现不行:当把主窗口1中的Timer_Tick停止掉后,程序单步调试走到子窗口2显示完毕(此时子窗口3因由窗口2呼出故也显示完毕了)后,程序便永远停止了,回不到主窗口1中Timer_Tick停止的地方。
我想了很久,到底怎么样的一种思想可以实现我上面说的功能呢?????诚恳请高手指教!!!!
其它窗体只需调用你的list注:在每次数据list后,都必须手工清理你的list使用过的数据。
2.静态变量SerialPort
2.静态变量SerialPort”有哪位大哥能帮小弟我详细的说下,我实在是看不懂上面的高手的回复
要访问主窗体下的静态成员,就直接用主窗体的类名称.来访问
要访问主窗体下的静态成员,就直接用主窗体的类名称.来访问”什么是窗体的类名称?
我百度无结果啊
请问是什么意思??我现在form1就是主窗口1(SerialPort在其下),需要调用form1下的串口控件的是子窗口3
主窗口1呼出子窗口2,子窗口2呼出子窗口3能不能请您一次性说的简单点.谢谢了
无法使用实例化引用来访问成员“Form1.comm”;请改用类型名来限定它
Form1 form1=new Form1()