C# - Collegare due form

mercoledì 03 febbraio 2010 - 21.45

Anonimo Profilo | Senior Member

Ho una form che contiene il bottone del classico gioco prendimi... in cui quando clicchi questo si sposta in coordinate casuali. Con una form chimata "Opzioni", voglio poter cambiare l'immagine di sfondo del form 1. Sono riuscito a comandare i bottoni ok e annulla del form Opzioni:

Opzioni giocoN = new Opzioni();
DialogResult cmd = giocoN.ShowDialog();

if (cmd == DialogResult.OK)
{
//switch (Opzioni.sfondo)
//{
// case "Albero":
// BackgroundImage = global::Prendimi_2._5.Properties.Resources.Albero;
// break;
// case "Panorama":
// BackgroundImage = global::Prendimi_2._5.Properties.Resources.Panorama;
// break;
// case "Erba":
// BackgroundImage = global::Prendimi_2._5.Properties.Resources.Erba;
// break;
// case "Cane":
// BackgroundImage = global::Prendimi_2._5.Properties.Resources.Cane;
// break;
//}
BackgroundImage = global::Prendimi_2._5.Properties.Resources.Erba;
btnClicca.Size = new Size(x, y);
}

il mio problema appunto stà nel poter associare al click di 4 bottoni nella form "Opzioni" il cambio dello sfondo nella prima form... come posso fare ??? Grazie in anticipo !!!!!!!!!!!!!!!

tonyexpo Profilo | Senior Member


Ciao


>Ho una form che contiene il bottone del classico gioco prendimi...
>in cui quando clicchi questo si sposta in coordinate casuali.
> Con una form chimata "Opzioni", voglio poter cambiare l'immagine
>di sfondo del form 1. Sono riuscito a comandare i bottoni ok
>e annulla del form Opzioni:
>
> Opzioni giocoN = new Opzioni();
> DialogResult cmd = giocoN.ShowDialog();
>
> if (cmd == DialogResult.OK)
> {
> //switch (Opzioni.sfondo)
> //{
> // case "Albero":
>// BackgroundImage = global::Prendimi_2._5.Properties.Resources.Albero;

//se ho capito bene ti trovi nel Form1 quindi il tuo esempio è già corretto

this.BackgroundImage = Prendimi_2._5.Properties.Resources.Albero;

//altrimenti rispiegami che nn ho capito


> // break;
> // case "Panorama":
>// BackgroundImage = global::Prendimi_2._5.Properties.Resources.Panorama;
> // break;
> // case "Erba":
>// BackgroundImage = global::Prendimi_2._5.Properties.Resources.Erba;
> // break;
> // case "Cane":
>// BackgroundImage = global::Prendimi_2._5.Properties.Resources.Cane;
> // break;
> //}
>BackgroundImage = global::Prendimi_2._5.Properties.Resources.Erba;
> btnClicca.Size = new Size(x, y);
> }
>
>il mio problema appunto stà nel poter associare al click di 4
>bottoni nella form "Opzioni" il cambio dello sfondo nella prima
>form... come posso fare ??? Grazie in anticipo !!!!!!!!!!!!!!!
>
>

Antonio Esposito
MCTS, MCP

http://blogs.dotnethell.it/espositos

Anonimo Profilo | Senior Member

Innanzitutto grazie... scusami se prima ho riassunto un po' troppo però avevo sbadatamente ricaricato la pagina non salvando il testo e quindi ho dovuto riscrivere tutto quando con un po' di fretta...

Passiamo al mio problema.... io ho un progetto con:

1) Form Windows chiamata "Gioco" (form principale)
2) Form Windows chiamata "Opzioni" (form secondaria)

Vorrei poter aprire la 2^ form al clic di un bottone sulla 1^... e fin qui tutto ok.... Vorrei però poter, cliccando su una radiobox della form "Opzioni" cambiare lo sfondo della prima.
Allego la foto della form così da rendere il tutto più semplice:


326x444 147Kb


Come puoi vedere ho aggiunto i pulsanti ok e annulla... il codice che prima ho postato l'ho inserito nella form 1 dopo il codice di apertura della form 2. Cioè:

// Apri Form
Opzioni giocoN = new Opzioni();
DialogResult cmd = giocoN.ShowDialog();

// Controllo se ho cliccato ok
if (cmd == DialogResult.OK)
{
// Così al click di 'ok' da alla form1 uno un'altro sfondo però io vorrei poter dare lo sfondo in base a ciò che l'utente ha scelto....
BackgroundImage = global::Prendimi_2._5.Properties.Resources.Erba;
}

Se quindi l'utente ha cliccato su ok vorrei associare alla form 1 uno sfondo in base alla radiobox selezionata....
Il problema è quindi come far "comunicare" delle variabili fra le 2 form... cioè potrei creare una variabile stringa che mi vale "Erba" al click dell'utente nella radiobox e, quindi, al click di ok, associare alla form 1 lo sfondo Erba..... ma le variabili dichiarate nel primo form non compaiono giustamente nella 2^.....

Scusami se nn sono molto chiaro... Ho iniziato a studiare c# da questo anno a scuola e solo da poco ci siamo interessati alle Windows Form....

tonyexpo Profilo | Senior Member

Nessun problema ;)


> // Apri Form
> Opzioni giocoN = new Opzioni();
> DialogResult cmd = giocoN.ShowDialog();
>
> // Controllo se ho cliccato ok
> if (cmd == DialogResult.OK)
> {

allora: qui puoi procedere in due modi, ma sempre cambiando il form Opzioni
1) cambi il .Modifiers dei radioButton passando da private a internal o public, così da poter fare:
if (giocoN.Option1.Cheked)
BackgroundImage = global::Prendimi_2._5.Properties.Resources.Erba;
elseif .........

2) esponi una proprietà sul form Opzioni così da farti esporre una enum (o al limite un numero o un codice) per discriminare la selezione:
if (giocoN.GetSelected==1)
BackgroundImage = global::Prendimi_2._5.Properties.Resources.Erba;



aggiornaci presto

ciao


Antonio Esposito
MCTS, MCP

http://blogs.dotnethell.it/espositos

Anonimo Profilo | Senior Member

Scusami se ho fatto tardi ma ho avuto molto da fare... ho seguito i tuoi consigli e....

Funziona !!!! non credevo fosse così semplice... mi è bastato cambiare la proprietà .Modifiers e associare al bottone ok questo codice...

if (cmd == DialogResult.OK)
{
if (giocoN.rbtPanorama.Checked)
{
BackgroundImage = global::Prendimi_2._5.Properties.Resources.Panorama;
}
if (giocoN.rbtErba.Checked)
{
BackgroundImage = global::Prendimi_2._5.Properties.Resources.Erba;
}
if (giocoN.rbtCane.Checked)
{
BackgroundImage = global::Prendimi_2._5.Properties.Resources.Cane;
}
if (giocoN.rdbAlbero.Checked)
{
BackgroundImage = global::Prendimi_2._5.Properties.Resources.Albero;
}
}

Così posso cambiare lo sfondo... Grazie tantissime !!!!!
Ora proverò ad associare questo metodo a due textbox per regolare la grandezza di un bottone....
Speriamo funzioni !!!!!
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5