[C#] Passare delle variabili da una form ad un'altra già aperta...

mercoledì 07 aprile 2010 - 16.23

Anonimo Profilo | Senior Member

Ragazzi ho un problema... sono riuscito a far passare dei valori da una form all'altra

private void opzioniToolStripMenuItem_Click(object sender, EventArgs e)
{
frmOpzioni a = new frmOpzioni(ref min, ref max, ref punteggio);
a.ShowDialog();
}

e sono riuscito a riprendere quelle varibili nella form apreta

public partial class frmOpzioni : Form
{
public frmOpzioni(ref int min, ref int max, ref bool punteggio)
{
InitializeComponent();
...............
Ora il mio problema è appunto poter riportare queste variabili nella form primaria cliccando su un bottone "Ok"...

private void btnOk_Click(object sender, EventArgs e)
{
frmVincita a = new frmVincita();

// Vario il valore di Min e Max in modo da far estrarre carte di un solo seme o tutto il mazzo
if (radioButton1.Checked)
{
a.min = 1;

Così non mi vengono modificate queste variabili... come posso fare ??

- Andrea -

LOSCO2175 Profilo | Newbie

dovresti costruire due proprietà pubbliche nel form iniziale in get e set in modo da settarle nel form secondario

AntCiar Profilo | Expert

ciao.

Se passi delle variabili con l'attributo 'ref' le stai passando per riferimento e non per valore, quindi qualsiasi modifica fai sull'oggetto passato lo stai facendo anche sull'oggetto di origine.

Se continua a darti problema posta un po più di codice e spiega meglio come strutturi il tutto e cosa vorresti ottenere.

Ciao ciao
Cristian Barca

Anonimo Profilo | Senior Member

Ciao e grazie della risposta... il mio intento era quello di creare una form Opzioni al cui caricamento controllava delle variabili e in base al valore impostava delle radiobutton.

Ero già riuscito a far caricare delle varibili ma non riuscivo a rimandarle di nuovo alla form principale al click di OK...
Ho quindi guardato un vecchio file che avevo e ho gestito l'evento click di ok nella form principale prendendo i valori delle variabili dalla form Opzioni e trasferendoli alla principale...

Posto il codice...

Apro la form Opzioni al click del ToolStrip... e gestisco l'evento di cui ho parlato prima...
private void opzioniToolStripMenuItem_Click(object sender, EventArgs e) { frmOpzioni a = new frmOpzioni(ref min, ref max, ref punteggio); DialogResult res = a.ShowDialog(); if (res == DialogResult.OK) { min = a.min; max = a.max; punteggio = a.punteggio; } }

Ecco il codice nella form Opzioni:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

E questo il codice che ho usato per gestire l'evento click del bottone ok

private void btnOk_Click(object sender, EventArgs e) { if (radioButton1.Checked) { min = 1; max = 52; } if (radioButton2.Checked) { min = 40; max = 52; } if (radioButton3.Checked) { min = 1; max = 13; } if (radioButton4.Checked) { min = 14; max = 26; } if (radioButton5.Checked) { min = 27; max = 39; } // Controllo se è stato scelto di visualizzare il Punteggio if (checkBox1.Checked) punteggio = true; else punteggio = false; Close(); }

Ho risolto tutto in modo perfetto... Grazie comunque delle risposte Immediate che mi avete inviato e della vostra disponibilità...
- Andrea -
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5