Вы можете изменить имя Component
во время разработки, используя Component.Site.Name
. Вы должны поместить код в блок try / catch для обработки исключения, когда имя дублируется.
Код:
Когда вы реализуете конструктор для своего компонента, man-код для изменения имени компонента во время разработки:
this.Component.Site.Name = "SomeName";
Вот полная реализация компонента и конструктора компонентов. В конструкторе компонентов есть глагол, который доступен при щелчке правой кнопкой мыши по компоненту, а также из сетки свойств в панели команд. Когда вы нажимаете на команду Rename
, она устанавливает имя компонента на SomeName
. Также отображается сообщение об ошибке, если есть компонент с таким же именем. В более реалистичном примере вы можете переопределить ActionLists
, чтобы позволить пользователю ввести новое имя.
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;
}
}
}