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

    [C#] Passaggio di variabile tra froms

    ciao, vi sembrerà strano ma non sono riuscito a trovare un articolo o un messaggio da un forum che spiegasse come cacchio passare una variabile valorizzata in un metodo di un form in una variabile che si trova all'interno di un metodo di un altro form..
    in VB.NET ci sono una marea di articoli.. ma c# sembra che lo schifino tutti
    allora..
    form 1:
    codice:
    private void miopulsante_Click(object sender, System.EventArgs e)
    {
    string ciccio="miotesto";
    form2 frmex = new form2();
    frmex.ShowDialog();
    }
    .. e con questo metodo valorizzo la variabile ciccio e apro il form..
    ora ho un metodo in questo secondo form:

    form2
    codice:
    public void miometodo()
    {
    string ciccio2= ; //qui voglio inserire il valore della variabile ciccio valorizzata nel primo form
    }
    qualcuno mi può dire come fare?
    Ciao
    Voglio l'alt+s anche per FF

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    798
    in vb.net faccio:
    codice:
      Public Class Form1
    
        Public ciccio As String
      .
      .
      .
    in form2 faccio Form1.ciccio

    in c# penso sia lo stesso.
    Ans.

  3. #3
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    Originariamente inviato da ans
    in vb.net faccio:
    codice:
      Public Class Form1
    
        Public ciccio As String
      .
      .
      .
    in form2 faccio Form1.ciccio

    in c# penso sia lo stesso.
    purtroppo no.. magari fosse così semplice.. dichiari la variabile globale e via.. no in c# si fà in altro modo
    non capisco per quale motivo, ma si fà in un altro modo
    Voglio l'alt+s anche per FF

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Cambiano le parole chiave e la sintassi ma, in questi frangenti, ciò che si fa in C# si fa in VB.NET e viceversa: i concetti della OOP sono gli stessi.

    Il problema si può risolvere in tanti modi: dipende da cosa ti serve disporre della variabile che desideri passare da un form ad un altro.

    Prendendo in esame il secondo form, potresti dotarlo di un campo pubblico di tipo stringa e valorizzarlo prima di chiamare ShowDialog, anzi potresti addirittura creare un metodo nuovo nella classe del secondo form che si occupi di prendere il valore della variabile pubblica e utilizzarlo per lo scopo prefissato e, solo dopo il corretto svolgimento delle operazioni, visualizzare il form con ShowDialog.

    Un esempio:

    codice:
    public class MySecondForm : System.Windows.Forms.Form
    {
        public string dummyString = "";
    
        public void ShowMe()
        {
            dummyTextBox.Text = dummyString;
            this.ShowDialog();
        }
    }
    In questo modo, la variabile dummyString può essere inizializzata da un metodo esterno, magari nella classe del primo form (che vedremo dopo) prima di richiamare il nuovo metodo ShowMe che non fa altro che copiare la stringa nella variabile all'interno di una casella di testo e, successivamente, visualizzare il form modale attraverso ShowDialog.

    Nella classe del primo form, quello chiamante, l'evento di gestione del clic sul pulsante che si occupa di valorizzare la variabile e richiamare il secondo form sarà simile al seguente:

    codice:
    public class MyFirstForm : System.Windows.Forms.Form
    {
        private void showButton_Click(object sender, System.EventArgs e)
        {
            MySecondForm secondForm = new MySecondForm();
            secondForm.dummyString = "Valore da visualizzare";
            secondForm.ShowMe();
        }
    }
    Viene creata un'istanza del secondo form; la variabile pubblica (il campo) dell'istanza viene valorizzata e, successivamente, si richiama il metodo ShowMe che provvede a fare quanto abbiamo illustrato prima.

    Alternativamente, si potrebbe evitare l'uso della variabile e passare direttamente il dato come parametro di ShowMe.

    Ovviamente, questo discorso può essere applicato, a livello teorico, concettuale e pratico (traducendo la sintassi) anche a VB.NET.

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

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    798
    beh ma in c# il form è una classe? Dovresti poter creare una proprietà Ciccio che poi devi richiamare nell'altro form. Quello che ho fatto io è questo... in automatico crea trasparente i metodi get e set.
    Ans.

  6. #6
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    ok funziona.. ma ragazzi.. ammetterete che è un casotto passare una semplice variabile da un form all'altro..
    non sarebbe stato + semplice (se se ne fosse data la possibilità) invocare una variabile pubblica del primo form (primoform.variabile) dal secondo form e recuperarne il valore?!
    Voglio l'alt+s anche per FF

  7. #7
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    ragazzi vi posso chiedere una cosa? però non riguarda l'oggetto di questo post..
    ho implementato una ricerca in un file xml, o meglio in un nodo specifico.. diciamo che così mi và bene.. solo volevo sapere se era possibile potenziarla.. adesso faccio uso delle regular expression, che in alcuni casi non soddisfano la ricerca..
    ecco come faccio..
    codice:
    Regex r = new Regex(searchString.ToUpper());
    Match m = r.Match(modello.InnerText.ToString()); 
    if (m.Success){
    etc..
    mettiamo che searchString sia = a "ss87", e che tra i nodi "modello" ci sia
    un valore = a "ss 87548", purtroppo non mi viene trovato questo nodo
    pensate che esiste un metodo migliore per fare una ricerca a tutto campo dei dati nelle stringe (perchè poi alla fine di questo si tratta.. e cioè di una ricerca in una stringa)..

    Poi ancora un'ultima cosa..
    alcuni programmi che ho installato, mi mostrano, per determinate funzioni che richiedono molto tempo per essere elaborate, una form senza bordi e soprattutto senza barra del titolo.. avete idea di che controlli si tratta? non credo di semplici form in quanto un form non può non possedere una barra del titolo.. almeno per quanto ne sò io
    Voglio l'alt+s anche per FF

  8. #8
    Originariamente inviato da dops
    ok funziona.. ma ragazzi.. ammetterete che è un casotto passare una semplice variabile da un form all'altro..
    non sarebbe stato + semplice (se se ne fosse data la possibilità) invocare una variabile pubblica del primo form (primoform.variabile) dal secondo form e recuperarne il valore?!
    La possibilità c'è, ad esempio dichiarando un campo public static, e quindi invocandolo da Form2 appunto con Form1.variabile.
    Ma te lo sconsiglio.

  9. #9
    Originariamente inviato da dops

    alcuni programmi che ho installato, mi mostrano, per determinate funzioni che richiedono molto tempo per essere elaborate, una form senza bordi e soprattutto senza barra del titolo.. avete idea di che controlli si tratta? non credo di semplici form in quanto un form non può non possedere una barra del titolo.. almeno per quanto ne sò io
    Puoi creare una Form senza bordo, impostando la proprietà

    codice:
    form1.FormBorderStyle=FormBorderStyle.None;

  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Originariamente inviato da dops
    ok funziona.. ma ragazzi.. ammetterete che è un casotto passare una semplice variabile da un form all'altro..
    non sarebbe stato + semplice (se se ne fosse data la possibilità) invocare una variabile pubblica del primo form (primoform.variabile) dal secondo form e recuperarne il valore?!
    Casotto? E' il modo corretto di eseguire l'operazione all'interno di un ambiente orientato agli oggetti.

    Originariamente inviato da dops
    ragazzi vi posso chiedere una cosa? però non riguarda l'oggetto di questo post.
    [MODERATORE ON]
    Una discussione per ogni domanda/argomento, altrimenti sì che ci viene un bel...casotto.
    [MODERATORE OFF]

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

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

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.