Ho affrontato lo stesso problema, ma stavo lavorando con i generici. Ho usato il contesto vincolante della casella combinata per sbarazzarsi di questo. (Molto utile quando non si conosce la dimensione della lista vincolante - nel tuo caso si tratta di 5 articoli)
Nel codice seguente, DisplayBindItem è solo una classe con Chiave e Valore.
List<DisplayBindItem> cust = (from x in _db.m01_customers
where x.m01_customer_type == CustomerType.Member.GetHashCode()
select new DisplayBindItem
{
Key = x.m01_id.ToString(),
Value = x.m01_customer_name
}).ToList();
cmbApprover1.BindingContext = new BindingContext();
cmbApprover1.DataSource = cust;
cmbApprover1.DisplayMember = "Value";
cmbApprover1.ValueMember = "Key";
//This does the trick :)
cmbApprover2.BindingContext = new BindingContext();
cmbApprover2.DataSource = cust ;
cmbApprover2.DisplayMember = "Value";
cmbApprover2.ValueMember = "Key";
La classe di riferimento.
public class DisplayBindItem
{
private string key = string.Empty;
public string Key
{
get { return key; }
set { key = value; }
}
private string value = string.Empty;
public string Value
{
get { return this.value; }
set { this.value = value; }
}
public DisplayBindItem(string k, string val)
{
this.key = k;
this.value = val;
}
public DisplayBindItem()
{ }
}
Contrassegnare come risposta se questo risolve il problema.
Grazie GrandMaster. Risolto. – Alegro
Contento di aver potuto aiutare. – GrandMasterFlush
A seconda del numero di ComboBox e del volume dei dati nel DataTable, ciò potrebbe comportare un notevole aumento dell'impronta di memoria dell'applicazione a causa della duplicazione dei dati. – cadrell0