私はこれをいくつかの異なる方法で処理しましたが、これが役立つことを願っています。
ジャスティンが述べたように、最初のオプションは AutoGenerateColumns = false を設定し、そこから手動で行うことです。これをバインドすると、ランタイムは Sample のすべてのパブリック プロパティの列を作成します。それらを削除したい場合は、それを行うことができます
DataGridView.Columns["SomePropertyOfSample"].Remove();
このソリューションは、最新の状態に保ち、アイテムを明示的に削除する必要があるため、少し問題があります。
プロパティの Browsable 属性を false に設定する Justin の Edit 2 オプションは興味深いものです。
私が最終的に使用することになり、かなりうまく機能すると思うソリューションは、インターフェースを中心に展開しています。
同じデータを表示する必要がある 2 つの異なる DataGridView がありましたが、毎回異なる列を表示および非表示にしていました。この場合、次のようにします。
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
}
次に、次を使用してサンプル コレクションを作成します。
BindingList<ISimpleSample> = new BindingList<ISimpleSample>();
それにバインドします。
後で列を追加する場合は、それらを適切なインターフェイスに追加するだけです。
これは私のプロジェクトではうまくいきました。あなたの考えを教えてください。