Je pense qu'il existe une solution simple à ma question stupide, mais je ne peux pas la résoudre aujourd'hui.Comment utiliser les éditeurs intégrés pour des propriétés exposées dans Contrôles utilisateur - Editeur de propriétés de masque Problème
J'ai un contrôle utilisateur qui a un contrôle MaskedTextBox
en lui-même. J'ai également exposé quelques-unes de ses propriétés pour que l'utilisateur puisse les modifier. Une de ces propriétés est Mask
propriété que je veux exposer avec la possibilité de démarrer un éditeur avec des valeurs prédéfinies comme dans un contrôle MaskedTextBox normal.
Je créé une propriété publique InputMask et tout mettre en place pour qu'il puisse fonctionner, mais après avoir montré l'éditeur, je reçois un message d'erreur qui contient cette erreur:
Object reference not set to an instance of an object
Si je ne pas utiliser l'éditeur et copier un masque ou le définir à travers le code fonctionne sans problèmes.
Voici un exemple de code:
...
MaskedTextBox maskedtextbox;
myUserControl()
{
...
maskedtextbox = new MaskedTextBox(){
some stuff...
};
}
[DefaultValue("")]
[Editor("System.Windows.Forms.Design.MaskPropertyEditor, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
[Localizable(true)]
[MergableProperty(false)]
[RefreshProperties(RefreshProperties.Repaint)]
public string InputMask
{
get { return this.maskedtextbox.Mask; }
set { this.maskedtextbox.Mask = value; }
}
Ce n'est pas simple dans ce Cas. Dans les cas normaux, il suffit d'enregistrer l'éditeur de type ui et vous n'avez rien à faire de plus. Mais dans le cas de 'MaskPropertyEditor', lors de la modification de la propriété, l'éditeur s'attend à ce que la propriété appartienne à' MaskedTextBox'. Vous devriez donc éditer exactement la propriété 'Mask' du' MaskedTextBox'. –