Principales respuestas
Menu Contextual en un listbox

Pregunta
-
Hola!!
Quisiera saber como mostrar un messagebox mediante un contextmenu asociado a un listbox, es decir, al hacer click con el boton derecho sobre el listbox seleccionar un item del listbox, que aparezca un contextmenu en el cual una opción será mostrar un messagebox.
Gracias, ojala me puedan ayudar.
Respuestas
-
Bueno para poder hacer eso ya deberias tener el ListBox y el ContextMenu en el formulario, siendo así entonces programas el Evento MouseUp del ListBox y agregas el siguiente código:
private void listBox1_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { int index = listBox1.IndexFromPoint(e.Location); listBox1.SelectedIndex = index; contextMenuStrip1.Show(Control.MousePosition); } }
se selecciona el item del Listbox sobre el cual se preciono el boton de derecho del mouse y se muestra en menú contextual, luego solo selecciona la opción que quieres en el menú y has click sobre ella y según la opción programas el evento del click y lo programas para que muestre lo que quieres que muestre, como por ejemplo:
private void mostrarMessageBoxToolStripMenuItem_Click(object sender, EventArgs e) { MessageBox.Show((string)listBox1.SelectedItem); }
Salu2
No le temas a la competencia, temele a tu propia incompetencia.- Propuesto como respuesta Enrique M. Montejo martes, 28 de septiembre de 2010 16:52
- Marcado como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator lunes, 4 de octubre de 2010 18:52
-
"lessdak" preguntó:
> Quisiera saber como mostrar un messagebox mediante un contextmenu
> asociado a un listbox, es decir, al hacer click con el boton
> derecho sobre el listbox seleccionar un item del listbox,
> que aparezca un contextmenu en el cual una opción será
> mostrar un messagebox.Con el botón derecho del ratón no vas a poder seleccionar un elemento del control ListBox; tendrás que seleccionarlo con el botón izquierdo, porque el botón derecho es para mostrar precisamente el menú contextual asociado con el control ListBox.
Configura en tiempo de diseño un objeto ContextMenuStrip, y en el evento Load del formulario, lo asociarías al control ListBox de la siguiente manera:
listBox1.ContextMenuStrip = this.contextMenuStrip1;
Ahora, tendrás que habilitar los eventos Click de cada uno de los elementos que forman el control ContextMenuStrip, que serán los procedimientos de evento que se desencadenarán cuando hagas clic con el botón derecho sobre un elemento cualquiera de su menú contextual.
Vamos a suponer que un elemento del menú contextual se llama mostrarMessageBoxToolStripMenuItem. Este sería su procedimiento de evento Click:
private void mostrarMessageBoxToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show("Se ha seleccionado el elemento " + listBox1.SelectedIndex.ToString());
}Un saludo
Enrique Martínez [MS MVP - VB]- Propuesto como respuesta Enrique M. Montejo martes, 28 de septiembre de 2010 16:38
- Marcado como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator lunes, 4 de octubre de 2010 18:52
Todas las respuestas
-
En el diseñador, añade un System.Windows.Forms.ContextMenu a tu Form,digamos, contextMenu1. Añade los menús que quieras, como si se tratara de unmenú normalito. Luego, en tu ListBox, ve a la propiedad ContextMenu yestablece la propiedad al menú que creaste con anterioridad (digamos,contextMenu1). Todo esto lo puedes hacer desde el diseñador. Y lixto.Si quieres puedes mirar este ejemplo:http://www.java2s.com/Tutorial/CSharp/0460__GUI-Windows-Forms/AddContextMenutoListBox.htmSaludos.
Fernando Gómez
fermasmas.wordpress.com -
Bueno para poder hacer eso ya deberias tener el ListBox y el ContextMenu en el formulario, siendo así entonces programas el Evento MouseUp del ListBox y agregas el siguiente código:
private void listBox1_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { int index = listBox1.IndexFromPoint(e.Location); listBox1.SelectedIndex = index; contextMenuStrip1.Show(Control.MousePosition); } }
se selecciona el item del Listbox sobre el cual se preciono el boton de derecho del mouse y se muestra en menú contextual, luego solo selecciona la opción que quieres en el menú y has click sobre ella y según la opción programas el evento del click y lo programas para que muestre lo que quieres que muestre, como por ejemplo:
private void mostrarMessageBoxToolStripMenuItem_Click(object sender, EventArgs e) { MessageBox.Show((string)listBox1.SelectedItem); }
Salu2
No le temas a la competencia, temele a tu propia incompetencia.- Propuesto como respuesta Enrique M. Montejo martes, 28 de septiembre de 2010 16:52
- Marcado como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator lunes, 4 de octubre de 2010 18:52
-
"lessdak" preguntó:
> Quisiera saber como mostrar un messagebox mediante un contextmenu
> asociado a un listbox, es decir, al hacer click con el boton
> derecho sobre el listbox seleccionar un item del listbox,
> que aparezca un contextmenu en el cual una opción será
> mostrar un messagebox.Con el botón derecho del ratón no vas a poder seleccionar un elemento del control ListBox; tendrás que seleccionarlo con el botón izquierdo, porque el botón derecho es para mostrar precisamente el menú contextual asociado con el control ListBox.
Configura en tiempo de diseño un objeto ContextMenuStrip, y en el evento Load del formulario, lo asociarías al control ListBox de la siguiente manera:
listBox1.ContextMenuStrip = this.contextMenuStrip1;
Ahora, tendrás que habilitar los eventos Click de cada uno de los elementos que forman el control ContextMenuStrip, que serán los procedimientos de evento que se desencadenarán cuando hagas clic con el botón derecho sobre un elemento cualquiera de su menú contextual.
Vamos a suponer que un elemento del menú contextual se llama mostrarMessageBoxToolStripMenuItem. Este sería su procedimiento de evento Click:
private void mostrarMessageBoxToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show("Se ha seleccionado el elemento " + listBox1.SelectedIndex.ToString());
}Un saludo
Enrique Martínez [MS MVP - VB]- Propuesto como respuesta Enrique M. Montejo martes, 28 de septiembre de 2010 16:38
- Marcado como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator lunes, 4 de octubre de 2010 18:52
-
"Marvin E. Pineda" escribió:
> private void listBox1_MouseUp(object sender, MouseEventArgs e)
> {
> if (e.Button == MouseButtons.Right)
> {
> int index = listBox1.IndexFromPoint(e.Location);
> listBox1.SelectedIndex = index;
> contextMenuStrip1.Show(Control.MousePosition);
> }
> }¡Leches! No me acordaba ya del método IndexFromPoint para obtener el índice del elemento del control ListBox existente en las coordenadas especificadas.
Muy bien, Marvin.
Un saludo
Enrique Martínez [MS MVP - VB] -