Как создать ссылки в окне «Свойства» для настраиваемого элемента управления? - PullRequest
1 голос
/ 22 ноября 2010

В .NET Framework есть несколько элементов управления, которые перечисляют несколько ссылок под списком свойств в окне «Свойства» в конструкторе Visual Studio. (например, TabControl, ComboBox)

Я создал пользовательский элемент управления и хочу создать ссылку в окне свойств, такую ​​как TabControl и ComboBox. При нажатии на ссылку должен вызываться определенный метод в моем элементе управления.

Как я могу это сделать?

Спасибо!

Ответы [ 3 ]

1 голос
/ 22 ноября 2010

Я думаю, вы ищете класс DesignerVerb .

1 голос
/ 22 ноября 2010

Вам необходимо создать собственный конструктор для элемента управления и переопределить свойство Verbs.При первом вызове переопределения создайте DesignerVerbCollection и заполните его.Возвращайте коллекцию при каждом последующем вызове.

Редактировать: Кстати, вы создаете конструктор, основываясь на System.Windows.Forms.Design.ControlDesigner, и применяете его к своему классу, помещая этот атрибут в свой класс:

 [Designer(MyControlDesigner)]
 public class MyControl
 {
    // ...
 }
0 голосов
/ 22 ноября 2010

devarticles

public class DirectoryTreeDesigner : ControlDesigner 
{ 

protected override void PostFilterProperties( 
System.Collections.IDictionary properties) 
{ 
     properties.Remove("Nodes"); 
} 

DesignerVerbCollection verbs = new DesignerVerbCollection(); 

public DirectoryTreeDesigner() 
{ 
     // Configure the designer verb collection. 
     string[] drives = System.IO.Directory.GetLogicalDrives(); 

     foreach (string drive in drives) 
     { 
         verbs.Add(new DesignerVerb("Set Drive " + drive, new EventHandler(OnVerb))); 
     } 
} 

public override DesignerVerbCollection Verbs 
{ 
     get { return verbs; } 
} 

protected void OnVerb(object sender, EventArgs e) 
{ 
    // Retrieve the selected drive. 
    char driveLetter = ((DesignerVerb)sender).Text[10]; 

    // Adjust the associated control. 
    ((DirectoryTree)this.Control).Drive = driveLetter; 
} 

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...