ho gestito questo un paio di modi diversi, Speriamo che questo sia utile.
La prima opzione, come ha detto Justin, è impostare AutoGennerateColumns = false e farlo manualmente da lì. Se lo si lega, il runtime creerà le colonne per tutte le proprietà pubbliche di Sample. Se si desidera rimuovere loro, è possibile farlo con
DataGridView.Columns["SomePropertyOfSample"].Remove();
Questa soluzione è un po 'problematico, in quanto è necessario tenerlo aggiornato, e rimuovere in modo esplicito gli elementi.
L'opzione Justin's Edit 2 di impostare l'attributo Browsable su false sulla proprietà è interessante, non l'ho mai provato prima.
La soluzione che ho finito per utilizzare e che penso funzioni piuttosto bene ruota attorno a un'interfaccia.
Avevo due DataGridView differenti che dovevano mostrare gli stessi dati, ma che mostravano e nascondevano ogni volta diverse colonne. In questo caso si dovrebbe fare:
public interface ISimpleSample
{
string Name {get;}
int ID {get;}
}
public interface IAdvancedSample
{
string Name {get; set;}
int ID {get; set;}
string Make {get; set;}
string Model {get; set;}
}
public class Sample : ISimpleSample, IAdvancedSample
{
//Implementation skipped
}
È quindi creare la vostra collezione di esempio utilizzando
BindingList<ISimpleSample> = new BindingList<ISimpleSample>();
e si legano a questo.
Se si desidera aggiungere colonne in un secondo momento, è sufficiente aggiungerle all'interfaccia appropriata.
Questo ha funzionato bene per il mio progetto, fatemi sapere cosa ne pensate.
Grazie. La proprietà DataMember manca nella classe DataGrid di Compact Framework. C'è un modo per farlo al livello BindingList? Quello che sto cercando è un modo per contrassegnare una proprietà Sample non associabile ... – sarsnake