passare le variabili in un’altra forma

Sto sviluppando un’applicazione per Windows in C #. Ho usato tre variabili decimali: counter , narrow e broad che memorizzano valori diversi in base ad alcuni calcoli.

Facendo clic su un pulsante, viene visualizzata una finestra di messaggio che mostra questi tre valori decimali e quindi l’applicazione si chiude.

Ora voglio aggiungere un altro modulo con tre etichette in cui è necessario mostrare questi valori variabili. Per favore, spiega, come posso passare quelle variabili nel modulo successivo da visualizzare in singole etichette?

Crea un nuovo modulo …

 public class CalculationResultForm : Form { public CalculationResultForm(){} public decimal Counter { set { labelCounter.Text = value.ToString(); } } public decimal Broad { set { labelBroad.Text = value.ToString(); } } public decimal Narrow { set { labelNarrow.Text = value.ToString(); } } private void OkButton_Click(object sender, EventArgs e) { // This will close the form (same as clicking ok on the message box) DialogResult = DialogResult.OK; } } 

Quindi, all’interno del pulsante del modulo esistente, fare clic su Gestore …

 private void MyButton_Click(object sender, EventArgs e) { CalculationResultForm resultForm = new CalculationResultForm(); resultForm.Counter = _counter; resultForm.Narrow = _narrow; resultForm.Broad = _broad; resultForm .ShowDialog(); Application.Exit(); } 

Un metodo è creare un nuovo costruttore nel 2 ° modulo. Allora puoi usare quei valori dal 2 ° modulo.

 public Form2(decimal x, decimal y, decimal z):this() { this.TextBox1.Text = Convert.ToString(x); this.Label1.Text = Convert.ToString(y); etc... }; 

Dalla forma principale

 Form2 frm2 = new Form2(x,y,z); frm2.Show(); 

Il modo più semplice è probabilmente aggiungere un nuovo metodo, chiamiamolo ShowWithDetails:

  public void ShowWithDetails(double Counter, double Narrow, double Broad) { CounterLabel.Text = Counter.ToString(); NarrowLabel.Text = Narrow.ToString(); BroadLabel.Text = Broad.ToString(); ShowDialog(); } 

Un modo semplice è usare le proprietà. Il modulo a cui vuoi passare i valori è solo un’altra class.

aggiungi qualcosa come questo al secondo modulo:

 public int counter {get; set;} 

quindi dalla prima forma faresti qualcosa sulla falsariga di

 Form2 form2 = new Form2(); form2.counter = 1; form2.ShowDialog(); 

o qualcosa del genere.

C’è un post sul blog che descrive come farlo senza usare ShowDialog () .