2009-09-25 4 views

Répondre

3

La suppression de la propriété de la grille de propriétés suffirait-elle, ou voulez-vous vraiment la garder visible mais verrouillée?

Pour le supprimer, vous pouvez mettre en œuvre un concepteur de contrôle et de gérer PreFilterProperties comme suit:

Public Class MyControlDesigner 
    Inherits System.Windows.Forms.Design.ControlDesigner 

    Protected Overrides Sub PreFilterProperties(ByVal properties As System.Collections.IDictionary) 
     MyBase.PreFilterProperties(properties) 
     properties.Remove("BackColor") 
    End Sub 
End Class 

<DesignerAttribute(GetType(MyControlDesigner))> _ 
Public Class MyControl 
    ' ... 
End Class 

Si le retrait est pas tout à fait assez bon, il faut aussi le verrouillage être juste possible de cette façon. Vous devez essayer d'affecter un ReadOnlyAttribute à la propriété BackColor, peut-être en le supprimant d'abord de la collection, puis en l'ajoutant en tant que nouvelle propriété avec l'ensemble d'attributs. Je ne sais pas exactement, je n'ai pas essayé, mais je ne pense pas que vous serez capable de définir l'attribut directement.

+0

Merci, cela a fonctionné! – Cyclone

+0

Code édité - avait omis MyBase.PreFilterProperties (propriétés), ce qui est important (MSDN: Si vous substituez la méthode PreFilterProperties, appelez l'implémentation de base avant d'effectuer votre propre filtrage.) –

Questions connexes