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

    Errore non classibicabile

    Ciao, questo è un problema VERAMENTE da

    Per dendere dinamica una finestra con campi che possono comparire e sparire, ho aggiunto una form che contiene codici, relativi ai campi che ne voglio cambiare la visibilità, l'altezza e posizione.
    Un esempio di uno di questi:
    codice:
    Public Class FieldsFormPrincManager
        Public Shared Sub FieldDataReclutamento(ByVal visible As Boolean)
            If (visible) Then
                FormPrincipale.ReclutatoDataLabel.Visible = True
                FormPrincipale.ReclutatoDateTimePicker.Visible = True
            Else
                FormPrincipale.ReclutatoDataLabel.Visible = False
                FormPrincipale.ReclutatoDateTimePicker.Visible = False
            End If
        End Sub
    ....altri sub simili di altri campi... 
    End Class
    poi c'è la funzione che richiama la funzione specificando l'argomento (ovviamento true o false a seconda che si voglia o no visualizzalo):

    codice:
    ...
    FieldsFormPrincManager.FieldDataReclutamento(True)
    ...
    ma compare l'errore:
    System.InvalidOperationException non è stata gestita
    Message="Errore durante la creazione del form. Per informazioni dettagliate vedere Exception.InnerException. Errore: Il form ha fatto riferimento a se stesso durante la costruzione da un'istanza predefinita e si è verificata una ricorsione infinita. All'interno del costruttore del form fare riferimento al form utilizzando 'Me.'"
    ...
    non capisco dove sia il problema!!!!

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Si tratta di VB.NET? In tal caso, l'errore è classificabilissimo, ma per cominciare ad intravedere una soluzione valida io comincerei a fare a meno degli "accrocchi" di VB.NET 2005, se si tratta di quella versione del linguaggio, programmando a mo' di VB6, e approfondirei il significato di alcuni concetti, almeno a livello basilare, quali classi e oggetti e le differenze tra queste due entità, pena il subentrare in errori assurdi da debuggare in quanto non vi è alcuna garanzia sull'efficacia del codice che appare in modo ambiguo (si usa il nome della classe, ma per fare riferimento ad un membro della relativa istanza/oggetto).

    E' inutile: per programmare con .NET occorre approfondire la OOP, non smetterò mai di dirlo.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    sei sempre molto gentile e disponibile, e le critiche sono sempre molto costruttive. Ho un problema di base: non ho il tempo di studiare tutto, ma cerco di imparare cercando di sviluppare quei programmini che mi servono!
    Lo so che non è la cosa giusta...forse! Ma è l'unica che posso fare ora!

    Il problema quale potrebbe essere dunque???

    Ho provato a mettere il codice che ti ho postato:

    Public Shared Sub FieldDataReclutamento(ByVal visible As Boolean)
    FormPrincipale .ReclutatoDataLabel.Visible = True
    ...
    della classe chiamata FieldsFormPrincManager

    dentro la stessa classe della FormPrincipale, ed ovviamente con le modifiche:
    Private Sub FieldDataReclutamento(ByVal visible As Boolean)
    Me .ReclutatoDataLabel.Visible = True
    ...

    e tutto funziona perfettamente!!! :master:

    Scusa la domanda stupida! Scusa la mia ignoranza, ma ti ripeto io imparo sperimentando e non solo leggendo un libro/manuale!
    DOM: Ma che differenza a questo punto c'è???
    Io ho ragionato con il concetto della differenza tra Public e Private.
    Sinceramente ho molto impressa nella mia testa quello che mi hai scritto una volta: "ad ogni classe il suo compito"!!! Per questo ho pensato ad una classe esterna che controlli tutti i campi dinamici e per nn fare confusione l'ho messo in un file diverso, ovviamente nello stesso progetto.

    Ciao e grazie!

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da lelo
    Ho un problema di base: non ho il tempo di studiare tutto, ma cerco di imparare cercando di sviluppare quei programmini che mi servono!
    Lo so che non è la cosa giusta...forse! Ma è l'unica che posso fare ora!
    Capisco l'esigenza, ma così metti chi ti risponde in condizioni di doverti scrivere tutto ciò che è riportato in qualsiasi libro per spiegarti qual è il problema e come risolverlo.

    A parte che non capisco quale sia il motivo per cui nessuno ha mai la possibilità di documentarsi... cosa significa "è l'unica cosa che posso fare ora"?... cosa ti impedisce di leggere la documentazione dell'SDK del framework?

    Originariamente inviato da lelo
    Io ho ragionato con il concetto della differenza tra Public e Private.
    E' questo il punto: Public, Private, Shared e così via non sono "concetti", ma sono parole chiave che esprimono precise impostazioni che non vanno ragionate o immaginate, ma conosciute, e solo una volta conosciute si possono utilizzare come si deve; al contrario, non è possibile andare per tentativi sperando che funzioni.

    Quando poi questo approccio comporta dei problemi, non si può chiedere di scrivere qui nel forum tutto ciò che troveresti in qualsiasi manuale e nella stessa documentazione del .NET Framework riguardo l'uso delle parole chiave; o meglio, puoi anche chiederlo, ma io ti farei semplicemente un "copia e incolla" da queste risorse.


    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Anch'io non posso dirti altro che di studiarti un libro: VB.NET è profondamente differente da VB6, e scrivendo in modo "sperimentale" si ottengono soluzioni poco efficienti, esteticamente brutte e spesso poco mantenibili. VB.NET abbraccia completamente il paradigma di programmazione orientata agli oggetti e si inserisce in un ambito di librerie di supporto molto più vaste e potenti di quelle standard Visual Basic. Certo, la Microsoft per non rompere la compatibilità ha inserito una serie di classi di supporto importate di default per aiutare gli sviluppatori "sperimentali", ma resta il fatto che programmare in VB.NET senza sapere cos'è una classe è una bestemmia: se in VB6 era possibile scrivere un'intera applicazione senza fare uso di classi (addirittura molti sviluppatori dilettanti non ne conoscono nemmeno l'esistenza), in VB.NET è impossibile: gli stessi form sono delle classi.
    Per imparare ti consiglio un libro su cui mi sono fatto le ossa e che non costa neanche tanto: Francesco Balena, VisualBasic.NET nozioni di base, Mondadori informatica, collana "I portatili" (€ 10,16). Offre un panorama abbastanza completo della tecnologia .NET, e spiega in modo piuttosto chiaro tutti i concetti che ci stanno alla base, senza tuttavia andare troppo in profondità sui meccanismi più profondi e non particolarmente utili al dilettante.
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Comprendo a pieno le vostre questioni!
    Fondamentalmente la linea in guida del programma me la tengo sempre aperta e la consulto continuamente, ma poi quando non capisco ecco che vengo sul forum!
    Ho acquistato un libro, appena ho iniziato a vedere il programma, ma nn mi ha entusismato affatto, anzi mi ha messo un po in difficoltà (non faccio nomi). Il discorso è che se non sai di cosa hai bisogno sapere, cioè del nome (per esempio della funzione) è impossibile trovarla; alla fine puoi solo studiare tutto, oppure chiedere a parola cosa vuoi fare poi affettivamente di documenti sulla funzione, come la usi, come, quando etc...

    Non capisco perche ho creato un'altra classe e questa funziona benissimo, questa controlla i messaggi che compaiono nella status bar del programma e gira perfettamente, mentre una classe che gestisca alcuni campi crei tutti questi problemi!

    Io adesso provo a documentarmi ancora, ma se nn riuscirò!!!!
    Ciao a tutti e grazie!!!!!!!

  7. #7
    L'intento di questi libri non è insegnarti tutta la gerarchia di classi del .NET Framework: in quest'ambito semmai ti parleranno delle classi più utilizzate, ma per questo c'è già la guida in linea, che è giustappunto una guida di riferimento, e non di apprendimento. Un libro come quello che ti ho citato ha come intento di insegnarti i concetti di base, senza i quali, appunto, puoi soltanto andare a tentoni; poi l'abilità con le librerie verrà con l'esperienza sul campo, in questo caso sì leggendo la guida in linea.
    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.