2009-07-17 34 views
0

ListViewItemCollectionを継承するクラスを作成しようとしています。このエラーが発生しました。 "メソッド 'ListViewItemCollection'のオーバーロードが '0'引数を取る。ListViewItemCollectionから継承

これを修正する方法や、このクラスからどのように継承することができます。すべての提案は大歓迎です。ご挨拶!

+1

私はそれはあなたのコンストラクタに問題があることをすぐに伝えることができます....しかし、あなたはあなたの派生クラスを投稿できますコード.. – James

答えて

3

フレデリックの答えは正しいですが、ListViewItemCollectionクラスにはオーナー、つまりコンストラクタに渡されるListViewオブジェクトが必要です。

しかし、私はあなたがする必要があるかもしれない、彼の宣言は間違っていると思う:

public class MyListViewItemCollection : ListView.ListViewItemCollection 
{ 
    public MyListViewItemCollection(ListView owner) 
     : base(owner) 
    { 
    } 
} 
+0

です。 ListViewItemCollectionは、ListViewクラス内で宣言されています。 しかし、私のコードはSOエディタに直接書かれているので、コンパイラなどで検証していません。とにかく、私はそれを適応させました。 :) –

+0

助けてくれてありがとうございます。 – doc

1

ListViewItemCollectionクラスには、デフォルトのコンストラクタが公開されていないようです。

これは、クラスに明示的にコンストラクターを作成する必要があることを意味します。コンストラクターは、ListViewItemCollectionクラスのアクセス可能な(保護された、またはパブリックな)コンストラクターを呼び出します。

ListViewItemCollectionクラスには、引数としてListViewをとるパブリックコンストラクタがあります。

だから、あなたのクラスには、次のようになります。

public class MyListViewItemCollection : ListView.ListViewItemCollection 
{ 
    public MyListViewItemCollection (ListView owner) : base(owner) 
    {} 
} 

編集:引数としてリストビューを取るコンストラクタは、アクセス可能な唯一のコンストラクタですので、あなたは私のようにそれを行う必要があるでしょうが上記の例。

+0

ListViewItemCollectionはListView型内で宣言されているため、宣言に含める必要があります。 "ListViewItemCollection"ではなく "ListView.ListViewItemCollection"。実際には –