Problemino :-(

martedì 13 maggio 2008 - 07.46

skomed Profilo | Newbie

ciao a tutti..

vi spiego il mio problema.


1)una classe(form) con un metodo Refresh che mi permette di aggiornare un'immagine quando clicco con il mouse.
2) una classe(dispositivo) dove viene creato un socket... quando questo socket riceve un messaggio particolare ( ho utilizzato una regular expression ) deve fare lo stesso tipo di aggiornamento dell'immagine( oggetto presente nella classe form e non in questa classe) prendendo il parametro che gli arriva.


nel fare questo il mio problema è che il metodo Refresh e gli oggetti da aggiornare sono nella classe form mentre il messaggio lo ricevo dalla classe dispositivo.

Come realizzare l'aggiornamento anche quando mi arriva il messaggio ?



rossimarko Profilo | Guru

Ciao,

la classe dispositivo dove viene istanziata? Nella form? Se si puoi procedere in due modi:
- creare un evento nella classe dispositivo e agganciarlo dalla form
- passare alla classe dispositivo il riferimento alla tua form e chiamare direttamente il metodo di refresh

Io personalmente suggerisco il primo metodo, in un ottica di programmazione ad oggetti è più pulito e lineare


-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

skomed Profilo | Newbie

non è istanziata nella form...

rossimarko Profilo | Guru

Da dove viene istanziata? Da un oggetto completamente scollegato?

Puoi eventualmente provare a ricercare la form nell'elenco di quelle attive e una volta trovata richiamare un metodo pubblico. Stai usando vb.net o c#?
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

skomed Profilo | Newbie

>Da dove viene istanziata? Da un oggetto completamente scollegato?
>
>Puoi eventualmente provare a ricercare la form nell'elenco di
>quelle attive e una volta trovata richiamare un metodo pubblico.
>Stai usando vb.net o c#?
>-----------------------------------------
>Rossi Marco
>http://blogs.dotnethell.it/rossimarko


sto programmando in C#.

ti faccio un esempio di cosa dovrei fare.

ho un file F_Main.cs che contiene questo :

public partial class F_Main : Form
{


public FMain()
{
InitializeComponent();
// il form contiene una textbox
text1.text="ciao";
}

public void Refresh()
{
text1.text="aggiornamento";
}
}

e un altro file Prova.cs fatto in questo modo :

public partial class Prova
{

public Prova()
{
// stabilisco una connessione al dispositivo ( ogetto di nome win )

// regular expression per catturare un tipo di messaggio e di conseguenza scateno l'evento win_Data
}

protected void win_Data(object sender, DataMatchEventArgs e)
{
// A QUESTO PUNTO LANCIARE IL METODO REFRESH SUL FORM PRECEDENTE.
F_Main.refresh(); // ma qui mi si verifica un problema di visibilita
}



L'oggetto Prova è stato creato nel form ma non volevo passare l'intero form come paramentro al costruttore... è possibile fare in altro modo?

rossimarko Profilo | Guru

Certo,

usando gli eventi (http://msdn.microsoft.com/it-it/library/17sde2xt.aspx). Se il tuo oggetto è istanziato nella form basta creare un evento e agganciare l'handler nella form.

Mi spiego meglio con un esempio:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

skomed Profilo | Newbie

si grazie... ho risolto usando un evento come mi hai suggerito... grazie mille...
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5