Solo para explicar un poco más de lo que Frans ha dicho ... Aunque el ListBox posee el ContextMenuStrip, aún puede personalizar los elementos en la tira de menú en el momento de la apertura. Por lo tanto, la personalización de sus contenidos se basa en la posición del mouse dentro del cuadro de lista.
El siguiente ejemplo selecciona el elemento en el cuadro de lista basado en un clic con el botón derecho del mouse y luego personaliza una tira de menú contextual según el elemento en el que el usuario hizo clic derecho. Este es un ejemplo sencillo, pero debe conseguir que va: Añadir un cuadro de lista a un formulario y agregue este código:
print(" #region Private Members
private ContextMenuStrip listboxContextMenu;
#endregion
private void Form1_Load(object sender, EventArgs e)
{
//assign a contextmenustrip
listboxContextMenu = new ContextMenuStrip();
listboxContextMenu.Opening +=new CancelEventHandler(listboxContextMenu_Opening);
listBox1.ContextMenuStrip = listboxContextMenu;
//load a listbox
for (int i = 0; i < 100; i++)
{
listBox1.Items.Add("Item: " + i);
}
}
private void listBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
//select the item under the mouse pointer
listBox1.SelectedIndex = listBox1.IndexFromPoint(e.Location);
if (listBox1.SelectedIndex != -1)
{
listboxContextMenu.Show();
}
}
}
private void listboxContextMenu_Opening(object sender, CancelEventArgs e)
{
//clear the menu and add custom items
listboxContextMenu.Items.Clear();
listboxContextMenu.Items.Add(string.Format("Edit - {0}", listBox1.SelectedItem.ToString()));
} ");
la esperanza de que ayude. -Mike
¿No puedes diseñar de otra manera? No puedo pensar en una IU como esta ... Nunca pensaría en hacer clic derecho en un elemento del cuadro de lista. – Gishu
También estás en Winforms o WPF? Las respuestas pueden variar dependiendo de eso. – Gishu