73 messaggi dal 08 settembre 2006
Salve a tutti,
la situazione è la seguente :

11-ho un programma per windows mobile nel quale ho un usercontrol che chiama dei metodi all'interno di una classe da me definita

2-in questa classe viene generato un evento in risposta ad un'azione fisica (il codice dell'evento è dato dalla dll che presiede al controllo di questa funzionalità fisica, nella fattispecie la gestione del raggio per la lettura dei codici a barre del palmare)

3-la mia esigenza è quella di riuscire a propagare tale evento al usercontrol chiamate, non voglio infatti mettere nessun riferimento al chiamate nella classe perchè i controlli da cui effettuo la chiamata possono essere diversi; in sostanza vorrei che nel momento in cui si genera l'evento nella classe automaticamente si generi anche un evento collegato nel control

Ho trovato questo articolo

http://www.aspitalia.com/script/930/Propagare-Evento-Controllo-Padre-Custom-Control.aspx

ma non riesco ad usare il codice perchè system.web non è disponibile nel progetto smardevice.

Come posso fare?

Grazie
Modificato da bryger il 19 novembre 2010 11.19 -
Ciao, la tua classe potrebbe esporre un evento che scateni in conseguenza dell' evento della risorsa fisica.
Il tuo UserControl potrebbe registrarsi a tale evento in modo tradizionale.
Modificato da novecento il 21 novembre 2010 00.39 -

Alessio Leoncini (SilverlightItalia.com)
.NET Developer, Interactive Designer, UX Specialist, Trainer @ 5DLabs.it
73 messaggi dal 08 settembre 2006
Grazie, ma potresti darmi qualche dettaglio in più? cosa intendi per registrarsi in modo tradizionale? tieni conto che dall' oggetto 'chiamante' non ho la possibilità di scegliere un momento preciso nel quale chiamare l'evento, tale evento viene generato esclusivamente nel momento in cui il raggio legge il codice a barre nella classe e in quel momento tale evento si dovrebbe generare automaticamente nel controllo dov'è la text box che dovrà contenere il codice letto.
Se non ho capito male:
//tua Classe
public class Classe
{
    //Libreria dell'Hardware
    Libreria lib = new Libreria();

    public Classe()
    {
        lib.CodiceLetto += new EventHandler(Lib_CodiceLetto);           
    }

    public void LeggiCodice()
    {
        lib.LeggiCodice();
    }

    void Lib_CodiceLetto(object sender, EventArgs e)
    {
        OnCodiceLetto();
    }

    public event EventHandler CodiceLetto;
    protected void OnCodiceLetto()
    {
        if (CodiceLetto != null)
            CodiceLetto(this, new EventArgs());
    }
}

//UserControl
public MainPage()
{
    InitializeComponent();
    Classe clas = new Classe();
    clas.CodiceLetto += new EventHandler(Clas_CodiceLetto);
    clas.LeggiCodice();
}

void Clas_CodiceLetto(object sender, EventArgs e)
{
    //a questo punto nello UserControl sai che il codice a barre è stato letto
}

In generale, un evento si scatena e una o più classi esterne si sottoscrivono e vengono "informate".

Alessio Leoncini (SilverlightItalia.com)
.NET Developer, Interactive Designer, UX Specialist, Trainer @ 5DLabs.it

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC