これを正しく行っているかどうかさえわかりません。しかし基本的に、クラス/インターフェースから構築されたオブジェクトのリストがあります。そこから、リストをDataGridView
Windows フォーム (C#)にバインドしています。
ここでリストは、UI を自動更新する同期リストです。この場合はDataGridView
.
すべてが正常に機能するようになりましたが、リストに動的オブジェクトが必要です。つまり、オブジェクトにはデフォルトで 2 つの静的プロパティ (ID、名前) があり、実行時にユーザーが残りのプロパティを選択します。これらは、データ グリッドにバインドする必要があります。リストの更新は、グリッドに自動的に反映されます。
動的オブジェクトを使用できることは承知していますが、ソリューションにアプローチする方法を知りたいです。
datagridview.DataSource = myData; // myData is AutoUpdateList<IPersonInfo>
現在IPersonInfo
はオブジェクトのタイプです。実行時にこのタイプの動的プロパティを追加する必要があります。
public class AutoUpdateList<T> : BindingList<T>
{
private ISynchronizeInvoke _SyncObject;
private Action<ListChangedEventArgs> _FireEventAction;
public AutoUpdateList()
: this(null)
{
}
public AutoUpdateList(ISynchronizeInvoke syncObject)
{
_SyncObject = syncObject;
_FireEventAction = FireEvent;
}
protected override void OnListChanged(ListChangedEventArgs args)
{
try
{
if (_SyncObject == null)
{
FireEvent(args);
}
else
{
_SyncObject.Invoke(_FireEventAction, new object[] { args });
}
}
catch (Exception)
{
// TODO: Log Here
}
}
private void FireEvent(ListChangedEventArgs args)
{
base.OnListChanged(args);
}
}
これについて手伝ってもらえますか?