Просто для того, чтобы более подробно остановиться на том, что сказал Франс ... Даже несмотря на то, что ListBox владеет ContextMenuStrip, вы все равно можете настроить элементы в полосе меню во время ее открытия. Таким образом, настраивая его содержимое на основе позиции мыши в списке.
В приведенном ниже примере выбирается элемент в списке на основе щелчка правой кнопкой мыши, а затем настраивается полоса контекстного меню на основе элемента, по которому пользователь щелкнул правой кнопкой мыши. Это простой пример, но вы должны начать: Добавьте список в форму и добавьте следующий код:
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() ) );
} ");
Надеюсь, что поможет.
-Mike