Не назначайте ContextMenuStrip для ListBox; вместо этого откройте его программно после того, как вы определили выбранный индекс
int _selectedIndex;
private void listBox1_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right) {
_selectedIndex = listBox1.IndexFromPoint(e.Location);
if (_selectedIndex == -1) {
return;
}
contextMenuStrip1.Show(listBox1.PointToScreen(e.Location));
}
}
UPDATE:
Теперь вы можете получить доступ к указателю из пункта меню, нажав
private void contextMenuStripDelete_Click(object sender, EventArgs e)
{
listBoxFiles.Items.RemoveAt(_selectedIndex);
}
Нет необходимости пересчитывать выбранный индекс и проверять -1. Контекстное меню вообще не открывается, если индекс равен -1.