2010-09-10 11 views
1

Je suis censé créer un ComboBox personnalisé en dérivant une classe de ComboBox dans mon application WinForms. Je n'ai jamais fait cela avant et ne pas trouver beaucoup de bons exemples de Google.ComboBox personnalisé lié au type dérivé de ComboBox

Je dois dériver une zone de liste déroulante personnalisée afin que je puisse créer la zone de liste déroulante personnalisée liée à un objet particulier.

Pourriez-vous s'il vous plaît me diriger dans la bonne direction?

C'est ce que j'ai jusqu'à présent.

CustomComboBox.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace MAPClient { 
    class MAPCodeComboBox : ComboBox { 

    } 
} 

J'ai quelques questions spécifiques:

  1. Quelles méthodes ai-je besoin de passer outre?
  2. Comment l'utiliser dans mon mode concepteur VS2010?
+0

"Quelles méthodes dois-je remplacer?" - bien ... qu'est-ce qu'il faut faire différemment? En outre, vous devez préciser s'il s'agit de winforms, asp.net, wpf, silverlight, etc ... –

+0

Si c'est la première fois que vous travaillez avec des contrôles personnalisés, alors vous devriez peut-être en lire un peu plus. Voir [Développement de contrôles Windows Forms personnalisés avec le .NET Framework] (http://msdn.microsoft.com/en-us/library/6hws6h2t.aspx) –

+0

@Marc Gravell: son WinForms – Moon

Répondre

0

Ok, enfin, j'ai ce qui suit pour un ComboBox personnalisé lié au type. Faites-moi savoir si je fais quelque chose de mal autrement, j'espère que cela aidera quelqu'un !!

MAPComboBox.cs

using System.Collections.Generic; 
using System.Windows.Forms; 

namespace MAPClient { 
    class MAPComboBox : ComboBox { 
     private MAPCodeObjectCollection MAPCodeItemCollection = null; 

     new public MAPCodeObjectCollection Items { 
      // override 
     } 

     new public List<MAPCode> DataSource { 
      // override 
     } 

     public MAPCodeComboBox() { } 
    } 
} 

MAPCodeObjectCollection.cs

using System.Windows.Forms; 

namespace MAPClient { 
    class MAPCodeObjectCollection : ComboBox.ObjectCollection { 
     public MAPCodeObjectCollection(ComboBox owner) : base(owner) { } 

     new public int Add(object item) { 
      // override 
     } 

     new public void Insert(int index, object item) { 
      // override 
     } 
    } 
}