Vous pouvez modifier le nom d'un Component
au moment de la conception à l'aide Component.Site.Name
. Vous devez placer le code dans un bloc try/catch pour gérer l'exception lorsque le nom est en double.
code:
Lorsque vous implémentez un concepteur pour votre composant, le code de l'homme pour changer le nom du composant au moment de la conception est:
this.Component.Site.Name = "SomeName";
Voici une mise en œuvre complète d'un composant et un concepteur de composants. Le concepteur de composant a un verbe qui est accessible lorsque vous faites un clic droit sur le composant, il est également accessible à partir de la grille de la propriété dans le plateau des commandes. Lorsque vous cliquez sur la commande Rename
, le nom du composant est défini sur SomeName
. Il montre également un message d'erreur s'il y a un composant avec le même nom. Dans un exemple plus réaliste, vous pouvez remplacer ActionLists
pour laisser l'utilisateur entrer lui-même un nouveau nom.
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Windows.Forms.Design;
[Designer(typeof(MyComponentDesigner))]
public class MyComponent : Component
{
public string SomeProperty { get; set; }
}
public class MyComponentDesigner : ComponentDesigner
{
DesignerVerbCollection verbs;
public MyComponentDesigner() : base() { }
public override DesignerVerbCollection Verbs
{
get
{
if (verbs == null)
{
verbs = new DesignerVerbCollection();
verbs.Add(new DesignerVerb("Rename", (s, e) =>
{
try
{
this.Component.Site.Name = "SomeName";
this.RaiseComponentChanged(null, null, null);
}
catch (Exception ex)
{
var svc = ((IUIService)this.GetService(typeof(IUIService)));
svc.ShowError(ex);
}
}));
}
return verbs;
}
}
}
Vous voulez changer le nom du contrôle? Vous avez un exemple de pourquoi vous devez faire cela? Il pourrait y avoir une solution plus simple plutôt que de penser en ce sens. – Codesleuth
Mon composant est un thème skin pour un contrôle de boîte de message amélioré. Si je dessine un nouveau skin à partir du bac, il serait bien de le nommer, disons "Office Style", au même endroit, sans avoir à aller sur la grille des propriétés. – Jules