Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 31
  1. #1

    [C#] Oggetto ActiveForm.OpenForm

    CIao a tutti....
    ho un problema che no riesco a decifrare.
    Prima di tuto le caratteristiche tecniche del mio problema.
    Uso VS 2005
    ho una picola applicazione C#
    ho un form MDI che chiama un altro form Child che chiamo A
    il form A contiene una serie di campi di testo da valorizzare
    per valorizzare i campi chiamo un secondo form (che chiamo B) che contiene una datagrid
    popolo il datagrid e seleziono una derminata riga
    dopo la selezione della riga, carico un vettore

    ecco il problema....

    non riesco piu a ripassare il vettore dal form B al form A e a visualizzare i dati nelle caselle di testo...
    nonostante la procedura sia corretta (codice in coda) non vengono visualizzati i contenuti.
    posto il codice...

    codice:
    // Form B
    // metodo per il caricamento del vettore con i dati de datagrid
    //elencoselezioneutenti è il datagrid
    		private void CaricaCampiTesto ()
    		{
    			string[] VettoreDati = new string [16];
    			VettoreDati[0] = Convert.ToString(elencoselezionautenti[num_riga,1]);
    			VettoreDati[1] = Convert.ToString(elencoselezionautenti[num_riga, 2]);
    			VettoreDati[2] = Convert.ToString(elencoselezionautenti[num_riga, 3]);
    			VettoreDati[3] = Convert.ToString(elencoselezionautenti[num_riga, 4]);
    			VettoreDati[4] = Convert.ToString(elencoselezionautenti[num_riga, 5]);
    			VettoreDati[5] = Convert.ToString(elencoselezionautenti[num_riga, 6]);
    			VettoreDati[6] = Convert.ToString(elencoselezionautenti[num_riga, 7]);
    			VettoreDati[7] = Convert.ToString(elencoselezionautenti[num_riga, 8]);
    			VettoreDati[8] = Convert.ToString(elencoselezionautenti[num_riga, 9]);
    			VettoreDati[9] = Convert.ToString(elencoselezionautenti[num_riga, 10]);
    			VettoreDati[10] = Convert.ToString(elencoselezionautenti[num_riga, 11]);
    			VettoreDati[11] = Convert.ToString(elencoselezionautenti[num_riga, 12]);
    			VettoreDati[12] = Convert.ToString(elencoselezionautenti[num_riga, 13]);
    			VettoreDati[13] = Convert.ToString(elencoselezionautenti[num_riga, 14]);
    			VettoreDati[14] = Convert.ToString(elencoselezionautenti[num_riga, 15]);
    			VettoreDati[15] = Convert.ToString(elencoselezionautenti[num_riga, 16]);
    			
    			frmIscrizioniUtenti currentForm = new frmIscrizioniUtenti();
    			currentForm.CaricaSelezione (VettoreDati);
    
    		}
    codice:
    //Form A
    //metodo per ricaricare i valori nelle caselle di testo
    		public void CaricaSelezione(string[] vociscelte)
    		{
    			txtNome.Text = vociscelte[0].ToString();
    			txtCognome.Text = vociscelte[1];
    			txtIndirizzo.Text = vociscelte[2];
    			txtNumCiv.Text = vociscelte[3];
    			txtCap.Text = vociscelte[4];
    			txtCitta.Text = vociscelte[5];
    			txtProv.Text = vociscelte[6];
    			txtDataNascita.Text = vociscelte[7];
    			txtEta.Text = vociscelte[8];
    			txtSesso.Text = vociscelte[9];
    			txtEmail.Text = vociscelte[10];
    			txtURLSito.Text = vociscelte[11];
    			txtTelefono.Text = vociscelte[12];
    			txtCellulare.Text = vociscelte[13];
    			txtFax.Text = vociscelte[14];
    			txtAnnotazioni.Text = vociscelte[15];
    		}
    mi hanno consigliato di usare le due proprieta in oggetto per risalire dal form B al form A e passare i dati, ma io nella mia classe SYstem.Window.Forms non ho quelle due voci...
    coem posso fare?

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    tu nel form b crei una nuova istanza del form A il che è sbagliato..

    quando crei per la prima volta il form child A devi tenere un riferimento (una variabile per capirsi) di quel form e poi all'occorrenza chiamare il suo metodo

  3. #3
    Intendi dire che nel form A devo istituire una variabile da usare come cntenitore di riferimento?
    ad esempio

    public string pippo; // o altra dichiarazione in base alla necessità, numero, vettore, ecc

    e poi richiamarla dal form B coem una comunissima variabile da valorizzare?

    come facevo un tempocon VB6 uguale...

    ma posso dichiararla generica?

    Del tipo (sullo stile VB)

    public variant pippo;

    o meglio

    public object pippo; ??


    grazie

  4. #4
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,523
    ciao

    aggiungi un delegato al namespace, come argomenti passi i dati che devi trasferire; poi il form A lo metti come campo nella classe MDI; il form A deve avere una proprietà public in modo da poter impostare i dati dalla classe che lo ha creato (MDI), ad esempio potresti richiamare il datagrid da valorizzare; nel form B crei un evento di tipo del delegato creato in precedenza che fai scaturire al cambio di dati; aggiungi l'evento creato in B al form MDI e nel corpo del metodo richiamato modifichi la proprietà della A.

    io farei cosi' perchè mi sembra il metodo piu' pulito, ma si puo' ottenere lo stesso risultato anche facendo diversamente.

  5. #5
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    basta un

    public Form formA;

    quando la crei dal form b (se ho capito bene) usi quella variabile così da poterla usare sempre nel codice..

  6. #6
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,523
    Originariamente inviato da Stoicenko
    basta un

    public Form formA;

    quando la crei dal form b (se ho capito bene) usi quella variabile così da poterla usare sempre nel codice..
    in effetti non è chiaro se sono due form istanziate da MDI oppure B crea A, per la seconda è facile facile basta fare come hai detto tu (anche se io non farei il form public ma solo un metodo che modifica le proprietà di A, è piu' sicuro)



    EDIT :

    ho detto una cazz... B non puo' creare A perchè A è quello che deve essere valorizzata, quindi sarebbe illogico.

    se facesse come detto solo public la form A non avrebbe modo di modificarla.

  7. #7
    allora aspettate, mi spiego meglio

    ho un form base di tipo MDI
    dal menu del form base richiamo un altro form chiamato A

    dal form A posso richiamare un ulteriore form chiamato B ch econtine la DataGrid

    i dati presi visualizzati e raccolti su B li voglio rimandare ad A

    cosi dovrebbe essere piu chiaro

  8. #8
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,523
    Originariamente inviato da EmanueleTo
    allora aspettate, mi spiego meglio

    ho un form base di tipo MDI
    dal menu del form base richiamo un altro form chiamato A

    dal form A posso richiamare un ulteriore form chiamato B ch econtine la DataGrid

    i dati presi visualizzati e raccolti su B li voglio rimandare ad A

    cosi dovrebbe essere piu chiaro
    ok allora come detto nel primo mio post solo che devi solo creare il delegato, l'evento nel form B e aggiungerlo ad A, nel corpo del metodo modifichi quello che ti pare.

  9. #9
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    oppure nel costruttore del form b passi un'istanza del form a così da poter chiamare il suo metodo..

  10. #10
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,523
    Originariamente inviato da Stoicenko
    oppure nel costruttore del form b passi un'istanza del form a così da poter chiamare il suo metodo..
    questo è anche piu' pratico...

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