Messaggi in un panel

di il
8 risposte

Messaggi in un panel

Buonaserata a tutti.
Per puro divertimento sto sviluppando un software per il calcolo della dichiarazione dei redditi (Mod.730).
A questo fine ho diviso il form in tre panel (ho usato due splitcontainer).
In un panel avrei previsto di suggerire all'operatore di inserire questo o quel valore oppure segnalare messaggi di errori.
So come aprire un form in un panel, ma mi sono reso conto di non avere la minima idea di come reindirizzare ad esso un messaggio!
Qualcuno può darmi un aiuto, uno spunto su cui lavorare?.
Grazie mille.

8 Risposte

  • Re: Messaggi in un panel

    Ho risolto così, ma gradirei qualche intervento migliorativo/sostitutivo :
    
    1)nello splitContainer apro un form vuoto nell'evento load:
            Dim f As New Form
            f = frmHAnagrafica
            f.TopLevel = False
            base730.SplitContainer2.Panel2.Controls.Add(f)
            f.Show()
    2)creo una funzione che effettua queste operazioni:
        Function helpMe(msg)
            frmHAnagrafica.Controls.RemoveAt(0)	'rimuove il controllo presente
            Dim l As New Label			'crea un nuovo controllo con le spefifiche indicate
            l.Name = "Label1"
            l.Text = msg
            l.Size = New Size(1000, 400)
            l.Font = New Font(FontFamily.GenericSansSerif, 12)
    
            l.Location = New Point(10, 10)
            frmHAnagrafica.Controls.Add(l)		'aggiungo il controllo al form 
            Return msg
        End Function
    3)richiama la funzione quando necessario:
    	esempio 
    	Private Sub cognome_enter(sender As Object, e As EventArgs) Handles cognome.Enter
            	helpMe("Inserire il cognome del dichiarante.")
        	End Sub
    
  • Re: Messaggi in un panel

    Perché rimuovere una Label per crearne un'altra praticamente uguale che differisce solo per il testo visualizzato?
    Lascia la Label e cambia solo il testo.
  • Re: Messaggi in un panel

    La tua osservazione è inoppugnabile, ma nei fatti non riesco a modificare solo il testo, perchè non viene visualizzato nella label.
    Due operazioni sono essenziali al funzionamento : la cancellazione della label e l'aggiunta del controllo al form.
    Forse sbaglio qualcosa. Farò ulteriori prove e poi ti farò sapere.
    Grazie comunque per il tuo intervento.
  • Re: Messaggi in un panel

    Jan ha scritto:


    ...ma nei fatti non riesco a modificare solo il testo, perchè non viene visualizzato nella label...
    Questa cosa non l'ho capita... Come fa a non essere visualizzato?
    Tu che codice hai provato per modificare solo il testo come suggerito da Alka?
  • Re: Messaggi in un panel

    Jan ha scritto:


    La tua osservazione è inoppugnabile, ma nei fatti non riesco a modificare solo il testo, perchè non viene visualizzato nella label.
    Basta impostare la proprietà Text: se non viene visualizzato, vuol dire che il controllo Label non è visibile, o si trova dentro un controllo Parent non visibile, o chissà quale motivo è causa della problematica (ma in assenza di dettagli, difficile stabilirlo con precisione).

    Jan ha scritto:


    Due operazioni sono essenziali al funzionamento : la cancellazione della label e l'aggiunta del controllo al form.
    Chissà cosa vai a cancellare (dato che cancelli il controllo andando per indice), e chissà cosa vai a inserire.
    Il codice che hai riportato non è chiaro.
  • Re: Messaggi in un panel

    In sintesi ho questo codice (esemplificativo) :
    
        Private Sub frmAnagrafica_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Me.AnagraficheTableAdapter.Fill(Me.Mod730_22DataSet.anagrafiche)
    
            Dim f As New Form
            f = frmHAnagrafica
            f.TopLevel = False
            base730.SplitContainer2.Panel2.Controls.Add(f)
            f.Show()
    
            Dim l As New Label
            l.Name = "Label1"
            l.Text = "Sezione anagrafica : AAAAAAAAA BBBBBBBBBBBBB CCCCCCCCCCCC DDDDDDDDDDDDDDD"
            l.Size = New Size(1000, 120)
            l.Font = New Font(FontFamily.GenericSansSerif, 16)
            l.Location = New Point(10, 10)
            l.BorderStyle = BorderStyle.FixedSingle
            frmHAnagrafica.Controls.Add(l)
    
            '---------------------------------
    
            Dim T As New TextBox
            T.Name = "Text"
            T.Size = New Size(1000, 100)
            T.Font = New Font(FontFamily.GenericSansSerif, 16)
            T.Location = New Point(10, 150)
            T.Text = "EEEEEEEEEEEEEEE FFFFFFFFFFFFFFFF GGGGGGGGGGGGGGG HHHHHHHHHHHHHH"
            frmHAnagrafica.Controls.Add(T)
    
            ClassAna.connessione()
        End Sub
    
    che crea un form in 'base730.SplitContainer2.Panel2' ed aggiunge ad esso due controlli : una label ed una text box, che -al caricamento della pagina- vengono correttamente visualizzati.
    La mia necessità è che -in fase di input- io possa (debba) modificare i testi sia della label che della textbox.
    Come faccio riferimento ai controlli per raggiungere questo fine?
    Ho cestinato il codice che avevo scritto perchè non funzionante.
    Questo codice è il mio punto di partenza.
    Grazie,grazie mille per ogni vostro aiuto.
  • Re: Messaggi in un panel

    Perdonami, ma ci sono un paio di cose che non capisco.
    Prendo il codice come riferimento.
    
    Dim f As New Form
    f = frmHAnagrafica
    
    Perché creare un Form se poi assegni la variabile a un altro oggetto?
    
    base730.SplitContainer2.Panel2.Controls.Add(f)
    
    Per quanto forse "tollerabile", non credo sia corretto aggiungere un Form qualsiasi come figlio di un pannello: esistono gli User Control per questo scopo.
    
    Dim l As New Label
    l.Name = "Label1"
    l.Text = "Sezione anagrafica : AAAAAAAAA BBBBBBBBBBBBB CCCCCCCCCCCC DDDDDDDDDDDDDDD"
    l.Size = New Size(1000, 120)
    l.Font = New Font(FontFamily.GenericSansSerif, 16)
    l.Location = New Point(10, 10)
    l.BorderStyle = BorderStyle.FixedSingle
    frmHAnagrafica.Controls.Add(l)
    
    Perché scrivi tutto il codice di cui sopra, quando puoi tranquillamente "progettare" il tuo User Control (e non un Form) visualmente, inserendo tutti gli elementi che servono, a designtime invece che a runtime?

    Come puoi avere la certezza matematica del risultato finale se crei i controlli tutti tramite codice e inserimento manuale, come quello sopra, invece di sfruttare le caratteristiche del framework che stai utilizzando anche nella fase di design della UI?

    Non comprendo il senso di questo approccio, quindi trovo un pochino superfluo andare a sindacare i motivi per cui, dopo aver creato un Form vuoto, sostituito il riferimento con un altro, aggiunto il Form in un controllo come figlio e creato varie Label, non ottieni quello che ti aspetti di vedere, oltre al fatto che stai utilizzando una variabile frmHAnagrafica che non è chiaro dove arrivi, dentro al Load di un altro Form... insomma, a mio parere, è un "piatto di spaghetti" intrecciati che rende impossibile creare ordine e quindi diagnosticare quello che non funziona, perché gli strumenti non sono usati nel modo consono (sempre a mio parere, s'intende).

    Ciao!
  • Re: Messaggi in un panel

    Grazie della tua disamina.
    Hai ragione : ho fatto un gran "casino"! Dopo le prime difficoltà mi sono intestardito a risolvere ed invece ... ho peggiorato.
    Butto via tutto e ricomincio ex novo.
    Grazie.
Devi accedere o registrarti per scrivere nel forum
8 risposte