C# winform usa contextmenustrip para generar menús dinámicamente
Código de muestra:
anulación protegida void OnLoad(EventArgs e)
{
base.OnLoad(e
//Agregar menú uno
ToolStripMenuItem subItem;
subItem = AddContextMenu("Noticias", contextMenuStrip1.Items, null
// Agregar submenú
AddContextMenu("Noticias de hoy", subItem.DropDownItems, nuevo EventHandler(MenuClicked));
AddContextMenu("Enfoque de hoy", subItem.DropDownItems, nuevo EventHandler(MenuClicked) );
//Agregar menú dos
subItem = AddContextMenu("Broma", contextMenuStrip1.Items, null
//Agregar submenú< /p); >
AddContextMenu("Broma moderna", subItem.DropDownItems, nuevo EventHandler(MenuClicked));
AddContextMenu("Broma antigua", subItem.DropDownItems, nuevo EventHandler(MenuClicked)); >
}
/// lt;summarygt;
/// Agregar submenú
/// lt;/summarygt;
/// lt; param name="text"gt; El texto a mostrar, si es -, se mostrará como una línea divisoria lt; / paramgt; lt; param name="cms"gt;La colección de submenús que se agregaránlt;/paramgt;
/// lt;param name="callback"gt;El evento que se activa al hacer cliclt;/ paramgt;
/// lt; devuelvegt; El submenú generado, si es una barra separadora, devuelve nulllt; devolución de llamada) p>
{
if (text == "-")
{
ToolStripSeparator tsp = new ToolStripSeparator(); /p>
cms.Add(tsp);
return null;
}
else if (!string.IsNullOrEmpty(text))
{
ToolStripMenuItem tsmi = nuevo ToolStripMenuItem(texto)
if (devolución de llamada! = nulo) tsmi.Click = devolución de llamada
cms.Add(tsmi); p>}
return null
}
void MenuClicked(remitente del objeto, EventArgs e)
{
MessageBox.Show("Hiciste clic en el elemento del menú [" ((remitente como ToolStripMenuItem).Text) "]");