Domanda

Questo utilizza Winforms.

Ho una casella di riepilogo e una casella combinata, entrambe legate alla stessa origine dati, stessi membri di visualizzazione, stessi membri di valore. Tutto è vincolato bene e gli elementi vengono visualizzati in entrambi i controlli.

Il problema è quando cambio una selezione in un controllo, si sposta sullo stesso indice nell'altro controllo. Non ho eventi legati ad alcun controllo. Sta succedendo da solo. Qualcuno ha mai incontrato questo?

È stato utile?

Soluzione

L'origine dati è un oggetto separato. Quando uno dei controlli modifica la riga attiva dell'origine dati, invia una notifica di aggiornamento agli altri controlli per spostarsi di conseguenza. Questo è un comportamento normale e previsto.

L'idea alla base è quella di semplificare la navigazione dei set di record mantenendo sincronizzati tutti i controlli associati.

Se non lo desideri, utilizza due origini dati legate agli stessi dati sottostanti.

Altri suggerimenti

Questo perché entrambi i controlli condividono lo stesso BindingContext / CurrencyManager . I controlli ereditano BindingContext dal loro controllo contenitore. Un BindingContext mantiene solo un CurrencyManager per DataSource. Se vuoi avere due diversi CurrencyManager, devi avere due BindingContexts.

Quindi quando una volta selezionata la selezione dei controlli, currencyManagaer.Current viene aggiornato. Ciò riguarda tutti i controlli che condividono la stessa origine dati.

Crea un'istanza di un nuovo BindingContext e assegnalo alla proprietà BindingContext di uno dei ComboBox:

comboBox2.BindingContext = new BindingContext ();

Questo dovrebbe risolvere il problema.

Penso che potrebbe essere inteso come una caratteristica. Per i moduli tipo Master / Dettaglio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top