2011-11-27 25 views
0

嘿我試圖打電話給駐留我Form1的代碼中的類中的公共子:類調​​用form1的子裏面

Public Class Form1 
    Public Shared objItem As ListViewItem 

    Class Server 
     Private Shared Sub StringMessageReceived(ByVal sender As Object, ByVal e As StringMessageEventArgs) 
      MsgBox("Received message: " & Convert.ToString(e.Message)) 
      'Form1.ListView1.Items.Add(Convert.ToString(e.Message)) 
      Call Form1.writeToLV(Convert.ToString(e.Message)) 
     End Sub 

    End Class 

    Public Sub writeToLV(ByRef theStuff As String) 
    MsgBox(theStuff) 
    objItem = ListView1.Items.Add(theStuff) 
    End Sub 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    ListView1.View = View.Details 
    ListView1.Columns.Add("Response", CInt(500)) 
    End Sub 
End Class 

它發出價值超過就好了,但是當它到達付諸它從來沒有做過的列表視圖?

任何指針?

大衛

回答

0

最有可能的解釋是,已經打開屏幕上的形式是不是在Form1的服務器類引用默認實例。我認爲你需要在某種程度上重構你的代碼:如果你只有一個Form1實例,顯式地創建表單並在全局變量中保留一個引用(比如g_Form1),而不是依靠VB提供的默認實例(假設你只有一個實例的表單)

如果你可以有一個以上的Form1實例,我會將你的內部服務器靜態類轉換爲一個接口,當一個新的表單被創建,它使用任何正在調用Server.StringMessageReceived的機制註冊自己。