2010-11-09 16 views
2

J'ai une collection de noms de fichiers dans une classe C#:Comment puis-je modifier une collection de noms de fichiers dans une grille de propriétés?

private List<string> m_files 

    public List<string> Files 
    { 
     get 
     { 
      return m_files; 
     } 
     set 
     { 
      m_files = value; 
     } 
    } 

Je veux être en mesure d'afficher et de modifier cette collection dans une grille de la propriété, en particulier, je voudrais être en mesure d'ajouter des fichiers à cette collection une norme FileDialog. Quel est le moyen le plus facile d'accomplir ceci?

Répondre

0

Vous pouvez pirater la StringCollectionEditor une solution pas cher:

[Editor("System.Windows.Forms.Design.StringCollectionEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))] 
    public List<string> Files { 
     get { return m_files; } 
     set { m_files = value; } 
    } 

Mais vérifier réellement les fichiers ou en utilisant un OFD va vous demander d'écrire votre propre UITypeEditor. Gardez à l'esprit que les chemins des fichiers au moment du design ne sont en aucun cas représentatifs des chemins qu'ils auront lorsque vous déploierez votre projet.

1

Utilisez le EditorAttribute pour spécifier que cette propriété est modifiée avec un CollectionEditor:

private List<string> m_files 

[EditorAttribute(typeof(System.ComponentModel.Design.CollectionEditor), typeof(System.Drawing.Design.UITypeEditor))] 
public List<string> Files 
{ 
    get 
    { 
     return m_files; 
    } 
    set 
    { 
     m_files = value; 
    } 
} 
+0

Existe-t-il un moyen de connecter 'FileDialog' à CollectionEditor? –

+2

Créer un CollectionEditor personnalisé http://www.codeproject.com/KB/tabs/propertygridcollection.aspx – Kell

+0

Ce code ne fonctionne pas, un TypeConverter serait nécessaire pour utiliser CollectionEditor. –