Scusa ma devo ancora capire, al di la dei vari errori presenti, che significato abbia, nel contesto in cui mi hai presentato il codice, creare una Form con dei controlli all'interno di una classe creata poi con:
codice:
dim F as object
F = New NewForm(OneGroup.Name, OneGroup.ClientHandle, AnOPCItemIDs)
all'interno di cosa e dove ?? Sicuramente
potrebbe anche essere dichiarato a livello di Form ma perchè dichiararlo Object ??? quando sai che è di tipo NewForm ?
Quindi avrò prima di tutto:
poi la creazione dell'istanza della classe NewForm proprio li dove l'hai messa non ci sta, oltretutto non ti permetterebbe neanche di complilare.
Per cui avrò al limite:
codice:
Public Class Form1
Dim F As NewForm
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
F = New NewForm(OneGroup.Name", OneGroup.ClientHandl, AnOPCItemIDs)
End Sub
End Class
Secondo tra il tuo primo post e l'ultimo hai cambiato sia la versione di VB che il codice?
Se vuoi essere aiutato devi scrivere il codice corretto e non ridotto ai minimi termini.
Per tua domanda finale
Il problema è che se dichiaro la mia listbox all'interno della New poi non posso utilizzare nella UpdateValue() come posso fare?
Devo rendere pubblico l'oggetto?
mi sembra che tu abbia risolto parzialmente risolto, basta che sposti la dichiarazione delle ListBox a livello di classe e non a livello di Sub, in questo modo:
codice:
Public Class NewForm
Dim listitem As ListBox
Dim List As ListBox
Public Sub New(ByVal Name As String, ByVal ID As Long, ByVal AnOPCItemIDs() As String)
Try
Dim NewForm As New Form()
NewForm.Text = "Gruppo: " & Name
NewForm.AutoSize = True
NewForm.Show()
listitem = New ListBox
List = New ListBox
List.Location = New System.Drawing.Point(0, 0)
List.Height = 100 : List.Width = 300
NewForm.Controls.Add(List)
listitem.Location = New System.Drawing.Point(0, List.Height + 10)
listitem.Height = 200 : listitem.Width = 300
NewForm.Controls.Add(listitem)
List.Items.Add("Gruppo: " & Name)
List.Items.Add("ServerHeader: " & ID)
For i = 1 To AnOPCItemIDs.Length - 1
If AnOPCItemIDs(i) Is Nothing Then
Exit For
Else
listitem.Items.Add(AnOPCItemIDs(i))
End If
Next
Catch ex As Exception
MessageBox.Show("Error: " + ex.Message + Chr(13) + ex.ToString, "Exception", MessageBoxButtons.OK)
End Try
End Sub
Public Sub UpdateValue(ByVal ClientHandles As System.Array, ByVal ItemValues As System.Array) ', Byval optional qualities As System.Array, ByRef timestamp As System.Array)
Try
For cnItem = LBound(ClientHandles) To UBound(ClientHandles)
listitem.Items.Add(ClientHandles(cnItem) & " " & ItemValues(cnItem))
Next
Catch ex As Exception
MessageBox.Show("Error: " + ex.Message + Chr(13) + ex.ToString, "Exception", MessageBoxButtons.OK)
End Try
End Sub
End Class
In attesa di chiarimenti.
Un saluto.