3

私はDataGridViewいくつかのオブジェクトのコレクションにバインドしました。には、名前DataGridViewのリストがあるものがありComboBoxます。選択するたびに、コレクションに新しいオブジェクトを追加しようとしています。しかし問題は、AddNew()常に子のデフォルトコンストラクターを呼び出すことです。:/コードは次のとおりです。

public class Parent:BindingList<Child>

public Child ChildProperty{get;set;}

public new object AddNew()
    {
        return ChildProperty;
    }

public new void AddingNew(object sender, AddingNewEventArgs e)
    {
        ChildProperty = new Child(this);
        e.NewObject = ChildProperty;
    }

親から子に渡す必要があるため、パラメーター化されたコンストラクターを使用する必要があります。

4

1 に答える 1

6

newキーワードを使用することで、基本クラスのメソッドをオーバーライドすることはありません。代わりに、派生クラスでのみ新しいメソッドを作成しますが、これは呼び出されることはありません。

代わりに、メソッドをオーバーライドしAddNewCore()新しいオブジェクトを返す必要があります。

編集Add():オーバーライドでコレクションの新しいインスタンスも作成する必要があります。

于 2013-01-21T14:57:47.607 に答える