0
我創建了一個應用程序,與c#中的機器進行交互(windows應用程序)。它包含更多的10種形式。這個項目需要與機器溝通。這裏我正在使用串口通信。 Form1用於通信。即串行端口數據接收事件僅以這種形式出現。同時我也必須發送數據給機器。爲此,form1中有一個函數。需要時,我必須從form2,3,4,5等所有表格發送數據。爲此,我創建了form1的一個對象,並使用此對象調用發送函數..但我無法執行此操作。This.owner是空的
代碼在Form1 在form3將數據發送到串行端口
public void SerialPortValueUpdated(byte[] array)
{
serialPort1.Write(array, 0, lm);
}
下,Form1函數調用如下
((Form1)this.Owner).SerialPortValueUpdated(ARRAY);
但是,當我去窗口2並回來牛逼form3,這.Owner是空的。我怎樣才能修改這段代碼?這個函數的調用方法是錯誤的嗎?
'.Owner'只會是什麼如果你明確地設置它,就像通過Show()方法一樣:'f3.Show(this); //從Form1'中。如果只有Form1的一個**實例,那麼你可以在[Application.OpenForms](https://msdn.microsoft.com/en-us/library/system.windows.forms.application .openforms(v = vs.110).aspx)集合。另一種選擇是在Form1中創建一個「靜態」成員以保存對自身的引用;在Load()事件中初始化它。然後其他表單可以從任何地方訪問該值。 –
你能舉個例子嗎? – user3575807
只能有一個Form1類的實例。所以利用它並向Form1添加一個靜態'Instance'屬性。在構造函數中將其設置爲'this'。現在你可以簡單地寫Form1.Instance.SerialPortValueUpdated(foo); –