2009-07-17 7 views
0

J'essaye de créer une classe qui hérite de ListViewItemCollection, et j'ai cette erreur: "Aucune surcharge pour la méthode 'ListViewItemCollection' prend '0' arguments".Héritage de ListViewItemCollection

Toute idée de comment réparer ou comment je peux hériter de cette classe. Toutes les suggestions sont les bienvenues. Salutations!

+1

Je peux dire tout de suite qu'il est un problème avec votre contructor .... cependant, pourriez-vous publier votre classe dérivée Le code – James

Répondre

3

La réponse de Frederik est correcte, la classe ListViewItemCollection nécessite un propriétaire, c'est-à-dire un objet ListView à transmettre au constructeur.

Cependant, je pense que sa déclaration est fausse, vous devrez peut-être faire:

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

En effet; ListViewItemCollection est déclaré dans la classe ListView. Mon code, cependant, a été écrit directement dans l'éditeur SO, donc je ne l'ai pas vérifié avec le compilateur ou quoi que ce soit. En tout cas, je l'ai adapté. :) –

+0

Merci pour l'aide cela fonctionne bien =) – doc

1

Il semble que la classe ListViewItemCollection ne possède pas de constructeur public par défaut. Cela signifie que vous devrez créer explicitement un constructeur dans votre classe, qui appelle l'un des constructeurs accessibles (protégés ou public) de la classe ListViewItemCollection.

La classe ListViewItemCollection a un constructeur public qui prend un ListView comme argument.

Ainsi, votre classe pourrait ressembler à ceci:

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

edit: Le constructeur qui prend un ListView comme argument, est le seul constructeur qui est accessible, de sorte que vous devrez le faire comme mon exemple ci-dessus.

+0

ListViewItemCollection est déclaré dans le type ListView, vous devrez donc l'inclure dans la déclaration: "ListView.ListViewItemCollection" au lieu de "ListViewItemCollection". –