2017-04-07 155 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'由於其保護級別而無法訪問 –

相關問題