Botton + ContextMenu

21/01/2009 - 20:58 por Carlos Pizzi | Informe spam
Hola !

Soy novato en C# y lo que quiero hacer es lo siguiente ...

En un formulario tengo 24 botones
button1
...
...
..
al
button24

le agregué a cada botón un ContextMenu de la siguiente forma

popUpMenu.MenuItems.Add("Agregar Audio", new EventHandler
(PopUp_Clicked));

button1.ContextMenu = popUpMenu;
...
...
...
button24.ContextMenu = popUpMenu;


Cuando hago click en un item del menu

voy a PopUp_Clicked que abajo lo muestro...


Lo que necesito saber es de que botón de los 24 estoy haciendo
click ...

Muchas gracias



private void PopUp_Clicked(object sender, EventArgs e)
{

MenuItem miClicked = null;

if (sender is MenuItem)
miClicked = (MenuItem)sender;
else
return;


string item = miClicked.Text;

if (item == "Agregar Audio")
{
MessageBox.Show("Agregar Audio");
}

}
 

Leer las respuestas

#1 Jorge Caballero
22/01/2009 - 16:56 | Informe spam
Hola Carlos: Intenta raelizando un codigo parecido a este:

private void Form1_Load(object sender, EventArgs e)
{
// Controlador del evento Click del Menu
opcion1ToolStripMenuItem.Click += new EventHandler
(ContextMenu_Click);

// Asociamos el controlador comun para el evento MouseUp
del los botones
button1.MouseUp += new MouseEventHandler(Buttons_MouseUp);
button1.ContextMenuStrip = contextMenuStrip1;

button2.MouseUp += new MouseEventHandler(Buttons_MouseUp);
button2.ContextMenuStrip = contextMenuStrip1;
}

// Este es controladore del evento MousUp de los botones
// tomara el argumente sender, que el objeto que ejecuta el
evento, que en este caso, sera unos de los botones
private void Buttons_MouseUp(object sender, MouseEventArgs e)
{
if (sender is Button)
{
ActiveButton = sender as Button;
}
}

private void ContextMenu_Click(object sender, EventArgs e)
{
MessageBox.Show(ActiveButton.Name);
}

Basicamente lo que hago es capturar el boton que esta llamando al
menucontext por intermedio de un controlador del Evento MouseUp, que
es para todos los botones. Obviamente hay muchas formas mas complejas,
pero eso lo iras aprendiendo con el tiempo (como espero yo hacerlo -
jejejejejejejejejeje-)

Un saludo.

Preguntas similares