Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    c# :passare un valore da una form ad un'altra

    Salve a tutti,

    sto costruendo un piccolo semplice giochino "Maze" e vorrei creare più livelli di difficoltà.
    Per fare questo ho creato form1 e form2.Ho un problema nel passare il valore del punteggio dalla form1 alla form2.

    Posto il codice:

    codice:
    public  partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                MoveToStart();
            }
             public int errori = 0;
            public int punteggio = 1000;
            private void labelFinish_MouseEnter(object sender, EventArgs e)
            {
                MessageBox.Show("You finish!" );           
                this.Close();
            }
            private void MoveToStart()
            {
                Point startingPoint = panel1.Location;
                startingPoint.Offset(10, 10);
                Cursor.Position = PointToScreen(startingPoint);
            }
    
            private void label1_MouseEnter(object sender, EventArgs e)
            {
                MoveToStart();
                errori = errori + 1;
                punteggio = punteggio - 10;
                label9.Text = Convert.ToString(errori);
                labelScore.Text = Convert.ToString(punteggio);
            }
    Non riesco a passare alla form2 il valore di labelscore, come posso fare?

    Mike "The Ram"

  2. #2
    basta passare l'istanza della form1 alla form2 o viceversa e da quell'istnza puoi accedere a tutti i membri pubblic e protected


    per esempio puoi farlo passando al costruttore di Form2 l'istanza di Form1
    es
    codice:
    public class form1(){
      public void creaForm2(){
          new form2(this);
      }
    }

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,318

    Moderazione

    Vedi suggerimenti come in questa discussione.

    Sposto, inoltre, la discussione nel forum corretto.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    non mi funziona, mi riporta il valore con cui ho inizializzato punteggio nella form1, vorrei il punteggio aggiornato...

    in form2 ho cosi' nel costruttore

    InitializeComponent();
    Form1 f= new Form1();
    labelScore.Text = Convert.ToString(f.punteggio);

    Se faccio new Form1(this) non me l'accetta...

  5. #5
    posta tutto il codice....mi sa che stai facendo un pò di pasticci!

  6. #6
    di form 1 il codice è già postato... per form2 ecco il costruttore:
    public Form2()
    {

    InitializeComponent();
    Form1 f= new Form1(); //f è un nuovo oggetto, ma io dovrei prendere l'istanza form1 già aperta, come posso fare?
    labelScore.Text = Convert.ToString(f.punteggio);

    labelscore è dichiarato in entrambe le form. dovrebbe prendere non il punteggio inizializzato, ma quello della form1....
    }// f è un nuovo oggetto, ma io dovrei prendere l'istanza form1 già aperta, come posso fare?

    Sono nel panico più totale...

    Mike "The Ram"

  7. #7
    Originariamente inviato da mikeRam
    di form 1 il codice è già postato... per form2 ecco il costruttore:
    public Form2()
    {

    InitializeComponent();
    Form1 f= new Form1(); //f è un nuovo oggetto, ma io dovrei prendere l'istanza form1 già aperta, come posso fare?
    labelScore.Text = Convert.ToString(f.punteggio);

    labelscore è dichiarato in entrambe le form. dovrebbe prendere non il punteggio inizializzato, ma quello della form1....
    }// f è un nuovo oggetto, ma io dovrei prendere l'istanza form1 già aperta, come posso fare?

    Sono nel panico più totale...

    Mike "The Ram"
    Si potrebbe usare i singletone nel tuo caso.....ma lascia stare per ora e fai così, modifica il costruttore di Form2 in questo modo

    codice:
    public Form2(Form1 form){
         labelScore.Text = Convert.ToString(form.punteggio); 
    }
    per utilizzi successivi puoi salvare l'argomento passato al costruttore in una proprietà della classe di Form2

  8. #8
    grazie mille!
    In realta' ho creato una classe statica con i metodi per settare i punteggi e gli errori, ed il campo punteggio come property della classe statica, e riesco a portarmi il punteggio fino alla fine

    Mike "The Ram"

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.