Pagina 3 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 21 a 30 su 31
  1. #21
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,539
    stai facendo effettivamente un bel minestrone....


  2. #22
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    se facevi come ti ho detto io dall'inizio saresti qui a chiedere il prossimo questito..

    metti nel costruttore di A un riferimento a B

    codice:
    private FormB riferimentoB;
    
    public A(FormB padre)
    {
         this.riferimentoB = padre;
    }
    e quando apri il form A

    codice:
    public void tuafunzionecheapreilforma()
    {
        FormA istanza = new FormA(this);
        istanza.ShowDialog();
    }
    E nel form a quando devi richiamare B

    codice:
    this.riferimentoB.MetodoDiB(paramentri);

  3. #23
    lo so tu hai ragione....
    ma siccome devo sperimentare le varie soluzioni, non per eleganza di codifica, ma per volontà di imparare una cosa che purtroppo mi serve....

    le provo tutte!!!

    dal mio immenso libro supercostoso non sono riuscito a capirci nulla...

    grazie

  4. #24
    Nel primo esempio di codice, usi la parola - padre -
    che sarebbe?

    messo cosi come lo hai messo tu, mi da un errore....
    mi dice che deve possedere una variabile di ritorno (il metodo)

  5. #25
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    perchè quello è il costruttore di A non un metodo chiamato A..

    su un po' di intraprendenza..

  6. #26
    scusa ...non è che io sia rinco, e solo che sto dando di testa...ho un sacco di rogne attualemten.
    Anzi, vi ringrazio del vostro aiuto....
    non riuscivo a capire, dato che messo come lo avevi messo tu pensavo fosse un parametro...

  7. #27
    Originariamente inviato da U235
    ...

    nel namespace :
    codice:
    ///come parametri puoi mettere quello che ti pare, anche una struttura o classe ad ok
    ///qui ho messo string testo come prova di concetto
    public delegate void Delegato(string testo);
    ora dentro A metti cio' che vuoi modificare ad esempio dentro un metodo :

    codice:
    ///parametri corrispondenti ai parametri del delegato
    void Modifica(string testo)
    {
          this.textbox1.text = testo;
    }
    in B aggiungi :

    codice:
    Delegato delegato = null;
    
    public event Delegato TestoCambiato
            {
                add
                {
                    this.delegato += value;
                }
                remove
                {
                    this.delegato -= value;
                }
            }
    e nel metodo che scaturira dal cambiamento dei dati (sempre in B ad esempio click del bottone "invia a A"

    codice:
    private void button1_Click(object sender, EventArgs e)
            {
                if (this.delegato!=null)
                this.delegato("pippo");
            }
    ovviamente quando crei B (dentro A) devi aggiungere l'evento e agganciarlo al metodo che ti sei creato (Modifica(string testo))

    codice:
    B B = new B()
    B.TestoCambiato += new System.EventHandler(this.Modifica);
    B.Show();
    Scusate se ripesco questo thread, ma ho un problema simile ma non ne vengo a capo.

    Ho seguito tutto quanto qua sopra, però, ho aggiunto una modifica in quanto io ho una mdi e 2 form distinte. La mdi chiama la formB che dovrà aggiornare un dato nella form A (richiamabile solo dalla mdi).
    In sostanza nella formMDI ho aggiunto un campo che fa riferimento alla FormA,
    codice:
    ...
    public FormA frm;
    ...
    Il metodo Modifica suggerito dal post sopra, l'ho messo nella formMDI e come metodo va a modificare la FormA per mezzo di una proprietà

    codice:
           void Modifica(string testo)
            {
                frm.AggiornaTesto = testo;
            }
    nella formA:
    codice:
            public string AggiornaTesto
            {
                set
                {
                    this.textBox1.Text = value;
                }
            }
    Sempre nella formMDI dove viene richiamata la formB:

    codice:
                FormB frm = new FormB();
                frm.CambiaTesto += new System.EventHandler(this.Modifica);
                frm.Parent = this;
                frm.Show();

    Ecco, questa parte mi genere un errore in compilazione e, non so come porvi rimedio e non so cosa ho sbagliato. Abbiate pazienza, ma sto cercando d'imparare.

    L'errore è:
    codice:
    Nessun overload per 'Modifica' corrispondente al delegato 'System.EventHandler'
    Grazie

  8. #28
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    4
    Nessun suggerimento?

  9. #29
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Gli eventi delle classi non si gesticono in quel modo.

    Guarda questo esempio:

    codice:
     class Class1
        {
            public event ModificaEventHandler Modifica;
            public delegate void ModificaEventHandler(string testo);
    
            public Class1()
            {
            }
    
            public void RaiseMyevent()
            {
                if (Modifica != null)
                {
                    Modifica("prova");
                }
            }
        }
    
     public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
          
                    public void RefreshUI(string testo)
            {
              //Tuo codice
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                Class1 myClass1 = new Class1();
                myClass1.Modifica += new Class1.ModificaEventHandler(RefreshUI);
                myClass1.RaiseMyevent();
            }
    
        }
    ma Jena72 o Jena1972??
    Sbagliare è umano, perseverare è diabolico.

  10. #30
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    4
    Eh.... devo aver fatto un po' di casino. Avevo perso l'account che avevo salvato sul pc che è andato in prepensionamento...

    Provo a rivedere come da te suggerito. Con il suggerimento sopra.... non ne vengo a capo.

    Grazie

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 © 2026 vBulletin Solutions, Inc. All rights reserved.