目前使用Listbox和contextMenuStrip,在项目右键单击后如何从列表框中检索项目的索引?
我的功能:
private void contextMenuStripOption1_Click(object sender, EventArgs e)
{
if (listBoxFiles.SelectedIndex == -1)
{
return;
}
Point ptCursor = Cursor.Position;
int itemIndex = listBoxFiles.IndexFromPoint(ptCursor);
}
删除功能:
private void contextMenuStripDelete_Click(object sender, EventArgs e)
{
if (listBoxFiles.SelectedIndex == -1)
{
return;
}
listBoxFiles.Items.RemoveAt(listBoxFiles.SelectedIndex);
}
答案 0 :(得分:3)
不要将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));
}
}
更新:
现在您可以从菜单项点击
访问索引private void contextMenuStripDelete_Click(object sender, EventArgs e)
{
listBoxFiles.Items.RemoveAt(_selectedIndex);
}
无需重新计算所选索引并测试-1。如果索引为-1,则根本不打开上下文菜单。
答案 1 :(得分:0)
使用容器控件:listBoxFiles.Items.IndexOf(listBoxFiles.SelectedItem)