Press "Enter" to skip to content

C# Come determinare quale controllo ha sollevato l’evento Item Changed di un Currency Manager

Un post veloce su C# al solito per sapere dove trovare una soluzione la prossima volta che mi serve.

L’oggetto CurrencyManager è sia amato che odiato da chi pone quesiti nei forum dove di solito partecipo, io l’ho sempre trovato utile, anche se a volte è un pochino contorto nelle sue funzionalità, soprattutto per chi è nuovo al databinding.

l’evento ItemChanged, Viene sollevato dal Currency manager ogni volta che un controllo bindato (italiese puro) nel contesto corrente, modifica i dati collegati ad una delle sue property.

per determinare quale controllo ha sollevato l’evento, all’interno dell’ ItemChangedEventArgs abbiamo una proprietà Index. E’ un indice a base 1, strano per essere in .Net, ad ogni modo, usando questo indice nella collezione Bindings del Currency manager, siamo in grado di ricavare quale dei controlli ha modificato il dato. nell’esempio seguente, se una particolare textbox ha modificato i dati, aggiorniamo il database utilizzando una classe data provider.

 void mCurMgr_ItemChanged(object sender, ItemChangedEventArgs e)
        {
                if (mCurMgr.Bindings[e.Index - 1].Control.Name == txtPercentualeCons.Name)
                {
                    mDpScenariAziende.Update();
                }
        }