Oppure

Loading
06/05/19 23:20
dylan666
Salve a tutti, mi trovo a "smanettare" un codice in VB.Net che secondo me è un porting maldestro di uno in C#.
Il codice è preso da un esempio basato su una libreria proprietaria ed è formato da un modulo (Module1) e un Form (Form1).
Nel modulo ad un certo punto c'è questa riga:

MyDelegateFunc = (AddressOf Form1.MyCallBack)


Per poterlo fare funzionare (dato che durante la compilazione ricevevo un errore) ho dovuto aggiungere "Shared" a MyCallBack che era una funzione solo "Public" del Public Class Form1.

Il problema è che quella funzione agiva su dei controlli del form (es. Button1.Visible = False) che adesso non funzionano più.
Ho provato con questa soluzione:

Public Class Form1
    Public Shared f as Form1

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
       f = Me
    End Sub
End Class


Ma per accedere ad esempio a Form1.f.Button1.Visible = False ho dovuto mettere anche Me.CheckForIllegalCrossThreadCalls = False
Esiste un'altra soluzione?
Sia chiaro che a me va bene sia togliere lo Shared alla funzione (purché l'AddressOf richiamato da modulo vada a buon fine) che mantenerlo come è ora ma riuscire a interagire con i controlli dei form.

Grazie anticipatamente a chi vorrà aiutarmi e per favore postate qualche esempio perché sono alle prime armi ;)
aaa
08/05/19 10:26
Thejuster
Senza il codice del C# non posso aiutarti molto.

Il cross Thread exception avviene quando un oggetto viene manipolato da un Thread e lo stesso in un'altro contesto.

Altrimenti và aggiunto un Invoke delegate per agire sul controllo.

alla tua funzione shared ho i miei dubbi.

Normalmente una classe astratta viene incapsulata con il metodo Inherits.

ad esempo

C#


public class Form1 : AltraClasse
{
     //ToDo  
}




Vb

Public Class Form1 Inherits AltraClasse

'ToDo

End Class



Senza il codice sorgente della classe più di questo non posso dirti.
mire.forumfree.it/ - Mire Engine
C# UI Designer