Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126

    [c#] Form principale e richiamo dei controlli da user control

    ciao, ho una form con un panel nel quale ho una label, sempre in questo form ho anche un altro panel al quale associo uno user control.. fino a qui tutto bene.. quando però vado a richiamare (per settarlo) da user control il controllo contenuto nel panel del form principale (la label) questa non viene settata.. come mai?
    codice:
                if (FormMain == null)
                {
                    FormMain = new mainForm();
                }
                foreach (Control findControl in FormMain.pMaster.Controls)
                {
                    if (findControl == FormMain.lblTitle)
                    {
                        ((Label)findControl).Text = "ssss";
                        
                    }
                }

  2. #2
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    sembra che la mia difficoltà stia proprio nello user control.. in quanto anche se metto una semplice label nel form (quindi in nessun contenitore di tipo panel) non riesca a modificare le proprietà del controllo..
    ad esempio:
    codice:
     if (FormMain == null)
                {
                    FormMain = new mainForm();
                }
    
                FormMain.label1.Text = "ssssssssss";
    non mi funziona

  3. #3
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    de nada?

  4. #4
    Devi impostare l'ambito di visibilità dei controlli di mainForm a Public o a Friend (a seconda di dove è definito l'UserControl).
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    Originariamente inviato da MItaly
    Devi impostare l'ambito di visibilità dei controlli di mainForm a Public o a Friend (a seconda di dove è definito l'UserControl).
    mi vuoi offendere? è chiaro che l'ho fatto.. altrimenti avrei ricevuto degli errori

  6. #6
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    aspè aspè.. debuggando l'ultimo codice che ho postato sembra funzionare.. il testo sembra venir settato.. ma cmq non riesco a vedere la label che cambia testo.. rimane sempre quello vecchio insomma..

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Io nutro seri dubbi sull'implementazione, forse perché manca del codice, ma non capisco come mai venga creata un'istanza del MainForm quando è necessario accedere al controllo Label: il suddetto Form dovrebbe essere già creato.

    Per la risoluzione del problema, credo che sarebbe più opportuno invertire i ruoli, cioè fare in modo che sia il MainForm a verificare in qualche modo, magari tramite un "evento di notifica" a cui si può agganciare, il momento in cui è necessario aggiornare il controllo Label.

    In alternativa, farei in modo che il MainForm, che suppongo essere il "creatore" dello UserControl, passasse il riferimento a se stesso, quale istanza, al controllo figlio affinché questo possa manipolarlo liberamente, rendendo ovviamente l'istanza del controllo Label accessibile (es. con visibilità public).

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

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

  8. #8
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    Originariamente inviato da alka
    Io nutro seri dubbi sull'implementazione, forse perché manca del codice, ma non capisco come mai venga creata un'istanza del MainForm quando è necessario accedere al controllo Label: il suddetto Form dovrebbe essere già creato.

    Per la risoluzione del problema, credo che sarebbe più opportuno invertire i ruoli, cioè fare in modo che sia il MainForm a verificare in qualche modo, magari tramite un "evento di notifica" a cui si può agganciare, il momento in cui è necessario aggiornare il controllo Label.

    In alternativa, farei in modo che il MainForm, che suppongo essere il "creatore" dello UserControl, passasse il riferimento a se stesso, quale istanza, al controllo figlio affinché questo possa manipolarlo liberamente, rendendo ovviamente l'istanza del controllo Label accessibile (es. con visibilità public).

    Ciao!
    si ok.. il mainForm non è necessario istanziarlo.. hai ragione.. ma il problema persiste.. non parliamo + dell'esempio della label che non capisco come mai non aggiorni il testo ma che da debug vedo aggiornato.. il problema + grosso stà proprio nello usercontrol..
    un esempio semplicissimo.. mettiamo che nello usercontrol abbia un pulsante.. al click su questo pulsante voglio rimuovere questo stesso usercontrol dal contenitore padre (un panel nel form principale).. come cavolo lo rimuovo visto che pur accedendo al panel non trovo controlli in esso (lo usercontrol che voglio rimuovere) ?? ovviamente il fatto che non vedo controlli nel panel lo vedo tramite debug..

  9. #9
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    o cacchio.. ma non è che il problema stà proprio nel fatto che istanzio una nuova form? ma nooooo.. non può essere quello.. e poi devo per forza istanziare la form main no?

  10. #10
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    e vaffa.. ehm.. scusate. cmq ho trovato il problema che era evidentissimo.. se provavo a creare una nuova istanza del form padre era pure normale che andavo a settare i controlli dell'istanza che in quel momento non vedevo!!!! dovevo semplicemente trattare lo usercontrol come un normalissimo form..
    grazie per le risposte

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.