Nur um ein wenig weiter zu machen, was Frans gesagt hat ... Obwohl die ListBox den ContextMenuStrip besitzt, können Sie die Elemente in der Menüleiste immer noch anpassen, wenn sie geöffnet wird. Somit wird der Inhalt basierend auf der Mausposition innerhalb der Listbox angepasst.
Das folgende Beispiel wählt das Element in der Listbox basierend auf einem rechten Mausklick aus und passt dann einen Kontextmenüstreifen basierend auf dem Element an, auf das der Benutzer mit der rechten Maustaste geklickt hat. Dies ist ein einfaches Beispiel, aber sollten Sie gehen bekommen: ein Listenfeld zu einem Formular hinzufügen und fügen Sie diesen Code:
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()));
} ");
Hoffnung, die helfen. -Mike
Können Sie es nicht auf andere Weise entwerfen? Ich kann mir keine solche Benutzeroberfläche vorstellen ... Ich würde nie daran denken, mit der rechten Maustaste auf einen Listeneintrag zu klicken. – Gishu
Sind Sie auch in Winforms oder WPF? Die Antworten können davon abhängig sein. – Gishu