如何在所选索引的列表框中使用鼠标右键单击按钮?

时间:2013-02-16 11:55:20

标签: c#

我选择了ListBox

的索引事件
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{    
    if (listBox1.SelectedItem != null)
    {
        label4.Text = listBox1.SelectedItem.ToString();
        string startTag = "Url: ";
        string endTag = " ---";
        int startTagWidth = startTag.Length;
        int endTagWidth = endTag.Length;
        int index = 0;
        index = label4.Text.IndexOf(startTag, index);
        int start = index + startTagWidth;
        index = label4.Text.IndexOf(endTag, start + 1);
        string g = label4.Text.Substring(start, index - start);
        label4.Text = g;
        mainUrl = g;
    }
}

我想在ListBox中选择一个索引(项目)后,我现在点击鼠标右键点击此索引,它会做一些事情。但是,如果我在ListBox或表单上的任何其他区域上制作鼠标右键单击按钮,它将不会执行任何操作。仅当鼠标位于所选索引上时。

我需要做的是用户可以从ListBox删除/删除项目。 我只是不知道当用户单击鼠标右键时,如何做到这一点的最佳逻辑。

显示我在用户首次选择项目时进行此操作,并且仅当鼠标位于此选定项目的上方/上方时才显示?显示我这样做,如果用户点击任何项目上的鼠标右键,它会自动选择它并做一些事情?

我不确定哪种方式更好,更逻辑以及如何做到这一点。

1 个答案:

答案 0 :(得分:1)

只需订阅列表框的MouseDown,然后使用IndexFromPoint检查您点击的当前项目是否为所选项目。

以下是一个例子:

private void listBox1_MouseDown(object sender, MouseEventArgs e)
{
        if (e.Button == System.Windows.Forms.MouseButtons.Right)
        {
            int index = listBox1.IndexFromPoint(e.Location);
            {
                if (index == listBox1.SelectedIndex)
                {
                    MessageBox.Show("Selected item clicked");
                }
            }
        }
}