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.
Merci, cela a fonctionné! – Cyclone
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.) –