PDA

View Full Version : Label che scompare su Compat Framework


Ansl72
11-12-2007, 14:40
Ciao sto lavorando ad un applicativo per Windows Mobile 5
ho il seguente problema: in pratica ho due form
1) mainForm
2) subForm (implementato come singleton per averne una sola istanza)

questo è il codice dell'implementazione del Form2:

public sealed partial class Form2 : Form {
public static readonly Form2 istanzaForm = new Form2();
Private Form2() {
InitializeComponent();
}

e questo è il codice per la chiamata:

private void button2_Click(object sender, EventArgs e) {
Form2 mioForm = Form2.istanzaForm;
mioForm.Show();
}

in entrambi i form ci sono:

1) label -> lblvalore
(il valore che mi serve)
2) textBox -> txtTesto
(serve per inserire un testo x valorizzare la lblvalore)
3) Button -> btnInvia
(lblvalore.Text = textBox.Text)

la lblvalore è stata dichiarata statica nel mainForm in modo tale che quando questa viene valorizata assume lo stesso valore sia nel mainForm che nel subForm.
Quando avvio l'applicazione valorizzo la lblvalore (e si vede) e apro il subForm effetivamente la lblvalore ha lo stesso valore del primo mainForm, quando chiudo il subForm e torno nel mainForm la lblvalore non cè più (non si vede) però cè, perchè se la valorizzo un un altro valore e richiamo il subForm questa si vede ed è valorizzata correttamente.

qualcuno sa aiutarmi a capire cosa succede?
grazie
Angelo

isAlreadyInUse
11-12-2007, 14:42
Ma usa una variabile statica con il valore non una label

IceCoder
11-12-2007, 14:43
premesso che io non programmo per windows mobile, avrei un idea.

quando chiudi un form, si avvia la procedura di disposing di tutte le risorse.

di conseguenza se chiudendo un form la tua etichetta viene eliminata, essendo static sarà eliminata anche per l'altro form.

dovresti modificare la procedura Dispose()

Ansl72
11-12-2007, 14:49
premesso che io non programmo per windows mobile, avrei un idea.

quando chiudi un form, si avvia la procedura di disposing di tutte le risorse.

di conseguenza se chiudendo un form la tua etichetta viene eliminata, essendo static sarà eliminata anche per l'altro form.

dovresti modificare la procedura Dispose()

grazie per avermi risposto così velocemente!
il problema è che io sono alle prime armi con C# per cui non saprei come fare e cosa fare, modificare la procedura Dispose() in che senso?

Angelo

ps se vuoi ti invio via email il codice che ho scritto

Ansl72
11-12-2007, 14:51
Ma usa una variabile statica con il valore non una label

mi serve la label perchè devo visualizzare tale valore nei due Form!

isAlreadyInUse
11-12-2007, 14:52
Ma non ho detto che la devi togliere la label, solo che non la fai statica e la valorizzi al load del form con il valore della variabile statica

IceCoder
11-12-2007, 14:52
di solito se crei un form con la procedura automatica (cliccando su aggiungi elemento) si genera un file che normalmente non si vede dove ci sono delle procedure di inizializzazione e distruzione riguardo la classe.

comunque puoi aggiungermi su msn o inviarmi una mail a icecoder@hotmail.it cosi vediamo se possiamo risolvere rapidamente ^^