如何从ListBox获取项索引

时间:2012-03-09 13:26:07

标签: c# winforms

目前使用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);
}

2 个答案:

答案 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)