Domanda

Per prima cosa ho una Listbox e ho impostato DataSource su MyObjectCollection

MyObjectCollection implementa l'interfaccia IListSource che contiene MyObject

MyObject ha il metodo

public override string ToString()
{
    return "test";
}

La casella di riepilogo ora visualizza " test " per ogni elemento in MyObjectCollection.

Ma se applico anche l'interfaccia IListSource a MyObject. La casella di riepilogo mostra una stringa vuota. Come risolverlo in " MyObject " classe. Una soluzione alternativa consiste nel risolverlo nell'evento Formato casella di riepilogo, ma ogni elemento della GUI deve implementare questa soluzione alternativa: /

È stato utile?

Soluzione

In generale, le cose dovrebbero essere o liste, o dovrebbero essere un'entità vincolante. Se si tratta di un elenco ( IList o IListSource ), la maggior parte dell'API di associazione dei dati supporrà che tu voglia (per scenari di associazione semplice, ovvero una riga) la < em> primo elemento dell'elenco secondario.

Lo cambierei semplicemente in modo che MyObject non implementa IListSource , ma incapsula , forse esponendolo tramite una proprietà Items . Puoi anche verificare se un TypeConverter personalizzato funzionerebbe (esaminerò ...)

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