Vi sara' capitato di notare che alcuni controlli hanno nella parte sottostante uno o piu' links che se cliccati vi permettono di agire sulle proprieta' del controllo stesso attraverso un editor evoluto rispetto alla property grid (ad esempio la DataGrid ha un link AutoFormat)
E' se volessimo una cosa del genere per il nostro controllo?... ControlDesigner e' la risposta.
Create una classe che eredita da ControlDesigner e fate l'ovverride della property Verbs (ebbene si queste entries si chiamano Verbs...) aggiungendo un vostro verb e associando allo stesso un delegate che verra' invocato quando lo user clicchera' il link.
public class UgiDesigner:ControlDesigner
{
public override System.ComponentModel.Design.DesignerVerbCollection Verbs
{
get
{
DesignerVerbCollection verbs=new DesignerVerbCollection();
DesignerVerb verb=new DesignerVerb("About", new EventHandler(About));
verbs.Add(verb);
return verbs;
}
}
private void About(object sender, EventArgs e)
{
MessageBox.Show("About UGI!");
}
}
A questo punto “decorate“ il vostro controllo con:
[Designer(typeof(UgiDesigner))]
public class MyUC : System.Windows.Forms.UserControl {...}
Risultato:
Da notare che la voce appare anche nel menu contestuale che si ottiene facendo right-click col tasto destro sul controllo...