2010-11-12 3 views
3

J'ai créé un UserControl avec un bouton, un TextBox et un DataGridView. Je définis les modificateurs de tous les contrôles sur public.Modification de DataGridView via Designer dans UserControl hérité

Maintenant, si je hérite de ce UserControl, je peux modifier le TextBox et le bouton via Designer (déplacer, modifier les propriétés) comme je m'y attendais. Mais pour DataGridView, toutes les propriétés sont désactivées.

Y a-t-il une raison pour laquelle je ne peux pas modifier un DataGridView via le Designer dans un UserControl hérité?

+0

En effet, c'est un étrange. En regardant le code créé par le concepteur derrière le contrôle utilisateur parente, je ne vois rien qui verrouille la grille. Pourtant, quand j'en hérite et que j'utilise l'éditeur visuel, le contrôle montre avec un petit verrou en haut, indiquant que quelque chose a bloqué le contrôle. Je ne vois aucune raison pour qu'il soit verrouillé, bien que quelque chose doive le faire. Cela ressemble à une question pour le concepteur du contrôle DataGridView. –

+0

a corrigé cela. Regardez ma solution –

Répondre

4

trouvé une solution ici: http://adamhouldsworth.blogspot.com/2010/02/winforms-visual-inheritance-limitations.html

En bref:

  1. Ajouter une référence à System.Design
  2. Hériter de DataGridView avec ce code:

    [Designer(typeof(ControlDesigner))] 
    public class InheritableDataGridView : DataGridView 
    { 
        public InheritableDataGridView() 
         : base() 
        { } 
    } 
    
  3. ?? ?
  4. Profit !!!
+0

Une chose à noter: Dans mon cas spécifique au moins (j'utilise VS2008), le petit verrou dans le coin du contrôle apparaît toujours, mais les propriétés dans le concepteur sont modifiables. Cela m'a troublé au début, car je pensais que la solution ne fonctionnait pas. Merci! – Ken

Questions connexes