2017-04-07 132 views
-1

我正在开发一个应用程序,需要随时关闭并打开不同的窗体。我遇到了一个问题,我怎么能传递一个变量,在这种情况下,一个SerialPort已经打开了一个初始形式?关闭时将变量从窗体传递到其他窗体

形式从Program.cs的

打开
Application.Run(new Auth()); 
Application.Run(new Main()); 

Auth.cs代码包括这样的:

SerialPort RCU = new SerialPort(); 
RCU.PortName = textbox.Text; //Port name is get from user input 

而且我想使用这个端口的其他形式的 “主”。

有没有可能做到这一点?

感谢

+0

你可以在formclosing事件发送它? – EpicKip

+0

@EpicKip我正在关闭窗体 - this.Close(); - 。我怎么能这样做? –

回答

1

只求一个Auth对象在Main构造函数,然后按顺序初始化它们:

Auth auth = new Auth(); 
Main main = new Main(auth); 
Application.Run(auth); 
Application.Run(main); 

然后在Main可以保存对象,并获得一次设置属性:

public Main(Auth auth) 
{ 
    AuthWindow = auth; 
} 

public Auth AuthWindow {get; set;} 

// later.. 
AuthWindow.RCU 

但是请注意,两个Application.Run调用不是你想要的方式,只需创建一个新的Auth表单并在加载主表单时显示它。

+0

这适用于简单的变量,但在我的情况下不是,因为它是一个串行端口,编译器因其安全性而阻塞。有没有可能解决这个问题? –

+0

“_Blocks,因为它的安全_”你甚至意味着什么? –

+0

错误CS0122:'PROPERTY NAMES'由于其保护级别而无法访问 –

相关问题