Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [VB .NET] problema WithEvents

    Premetto che uso pochissimo VB.NET e magari ho scelto il modo più sbagliato, comunque...

    Devo preparare tanti Dialogs per calcolare dei valori per un Form principale.

    Ogni Dialog ha una parte di struttura comune (TextBox col risultato, tasto ok, cancel)
    e una che cambia in base al criterio di calcolo (es. uno ha 3 campi testo, uno è solo un ComboBox ect.)

    Per i Dialogs ho creato un Form "comune" con in basso la parte in comune
    e ho lasciato lo spazio per caricare dinamicamente, di volta in volta, degli UserControl.

    Ora cominciano i problemi:

    Per far si che, cambiando dei campi negli UserControl, cambi anche il risultato nel Form "comune"
    ho creato un Public Event negli userControl che viene monitorato dal form "comune".

    Tutto funziona, ora però non riesco a scegliere dinamicamente quale UserControl caricare sul Dialog in quanto
    [b]non è consentito istanziare una classe WithEvents all'interno di New()

    Ecco il codice in sintesi:
    codice:
    Public Class FormComune
       Public WithEvents CampiInput As New Inputs_2
       Private Sub InputsChanged(...) Handles CampiInput.EvtChange
       (...)
    End Class
    Come faccio a scegliere, di volta in volta, che CampiInput sia un istanza di Inputs_2 piuttosto che di Inputs_xxx ???

  2. #2
    Credo che questo non sia il modo più corretto di fare quello che vuoi fare; normalmente si crea un form base (in cui inserirai la TextBox con il risultato, OK e Cancel) da cui ereditano gli altri form che devono avere la sua struttura.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Sob, hai ragione cercavo di recuperare il lavoro fatto finora...

    Grazie

  4. #4

    E adesso???

    Ho fatto come dicevi tu: un form base (con risultato, OK e Cancel) da cui ereditano altri form

    Ma ora come faccio a creare dinamicamente l'istanza in base al nome della classe???

    Tipo:

    codice:
    Dim calc = CreateInstanceFromClassName("Calc_3")

    Perchè con Python anche un novellino saprebbe fare questa cosa e con VB.NET bisogna essere un master????

  5. #5
    Risolto, ma ho dovuto cercare in non so quante pagine...

    codice:
        Function GetFormByName(ByVal FormName As String) As Form
            Dim T As Type = Type.GetType(FormName,True,True)
            Return CType(Activator.CreateInstance(T), Form)
        End Function
    
    'an example call:
    GetFormByName("Form2").Show

  6. #6

    Re: E adesso???

    Originariamente inviato da cicciput
    Ma ora come faccio a creare dinamicamente l'istanza in base al nome della classe???
    Per curiosità, perché ti serve fare questo? :master:
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.