WPF Problema con le Classi e le Finestre

di il
2 risposte

WPF Problema con le Classi e le Finestre

Salve a Tutti!... da quando programmo con in WPF ho questo problema che con le normali Windows Form non avevo...

Se io ad esempio Creassi una Finestra ed una Classe e nella Finestra ci metto una Button ed una TextBox.
Nella Button gli dico di chiamare una Sub della classe, dove dice di scrivere qualcosa nella TextBox della Finestra.

Quindi nella Finestra Scrivo:
Class MainWindow 
    Dim dm As New Class1
    Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
        dm.SE()
    End Sub
End Class
Mentre nella Classe Scrivo:
Public Class Class1
    Public Sub SE()
        Dim a As New MainWindow
        a.TextBox1.Text = "CIAO"
    End Sub
End Class
[/color]Con le Windows Form tutto Liscio... ma con i WPF non accade Nulla...
magari provateci e Scrivete qualche risposta se avete capito il Problema.

Grazie! mi farete un GroOossissimo Favore! [/b]

2 Risposte

  • Re: WPF Problema con le Classi e le Finestre

    Ciao DenyEr
    Non viene scritto nulla perchè te crei una nuova mainwindows e il valore text viene assegnato alla nuova finestra, ho modificato un pochino il codice che hai messo te di esempio, provalo e vedi il comportamento del nuovo codice, dovrai inserire una seconda TextBox con nome TextBox2:

    Class MainWindow
    Dim dm As New Class1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
    'Richiama la Sub SE della Class1
    dm.SE()
    'Richiama la Sub Scrivitesto della Class1 passandogli l'oggetto Textbox
    dm.Scrivitesto(TextBox2)
    'Richiama la Funzione ciscrivo della Class1 passando direttamente il testo alla proprietà text
    TextBox1.Text = dm.ciscrivo
    End Sub
    End Class

    Public Class Class1
    'Sub che crea una nuova finestra mainwindows e valorizza il capo text della nuova texbox
    Public Sub SE()
    Dim a As New MainWindow
    a.TextBox1.Text = "CIAO"
    a.Show()
    End Sub
    'Sub che tramite il passaggio di parametri valorizza il campo text della textbox1 nella mainwindows di avvio
    Public Sub Scrivitesto(ByVal miatextinmain As TextBox)
    miatextinmain.Text = "Così è meglio"
    End Sub
    'Funzione che restituisce un testo
    Public Function ciscrivo() As String
    Return "Funziona"
    End Function

    End Class


    Facendo a.Show() dai vita alla nuova finestra che come per magia avrà il testo "CIAO"
    Un modo per valorizzare la TextBox1 nella MainWindows di avvio del progetto è quello che creare una Sub con firma, cioè tra le parentesi dichiari una variabile di tipo TextBox in questo caso, tale firma sarà richiesta al nel momento in cui richiamerai la Sub dall'evento Click del button, semplicemente dovrai passargli come parametro il nome della TextBox che ti interessa.
    Un altro modo per valorizzate il campo text della TextBox1 nella MainWindows di avvio del progetto è quello di passare alla proprietà Text, direttamente dall'evento click del button, il valore tramite una funzione che avrai nella Class1

    Inoltre lanciando il programma imposta dei punti di interruzione e controlla sempre i valori delle variabili e degli oggetti che ti interessano. Nel tuo codice mettendo un punto di interruzione nella Sub SE potrai vedere che il Name della TextBox1 sarà "" quindi non quello della prima MainWindows che è TextBox1.
    Non sono un buon maestro spero di essere stato chiaro, rimango a tua disposizione per chiarimenti, ti consiglio di provare il codice sopra, visto in esecuzione è più chiaro.
  • Re: WPF Problema con le Classi e le Finestre

    GRAZIE Lured86 !!!
    Finalmente o risolto il Mistero dei WPF!
    Ora posso continuare a programmare!
    In Effetti era l'unico problema con cui non programmavo più... oh Beh.. Addio Windows Form!!
    Grazie Ancora!!!
Devi accedere o registrarti per scrivere nel forum
2 risposte