我选择了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
删除/删除项目。
我只是不知道当用户单击鼠标右键时,如何做到这一点的最佳逻辑。
显示我在用户首次选择项目时进行此操作,并且仅当鼠标位于此选定项目的上方/上方时才显示?显示我这样做,如果用户点击任何项目上的鼠标右键,它会自动选择它并做一些事情?
我不确定哪种方式更好,更逻辑以及如何做到这一点。
答案 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");
}
}
}
}