C# 当下拉列表打开时,如何通过右键单击删除组合框中的选定项?

C# 当下拉列表打开时,如何通过右键单击删除组合框中的选定项?,c#,winforms,drop-down-menu,combobox,C#,Winforms,Drop Down Menu,Combobox,打开下拉列表时,如何通过右键单击删除组合框中的选定项 问题是,当您使用eventSelectedIndexChanged时,它没有MouseEventArg作为参数,这意味着您无法定义按下了哪个鼠标按钮 另一方面,当您使用eventMouseDown时,它无法检测SelectedIndexChanged。只有一种情况下,MouseDown在按下按钮时起作用。右键,单击没有打开下拉菜单的组合框(基本上是右键单击组合框) 你有什么建议吗 到目前为止,我所尝试的: private void combo

打开下拉列表时,如何通过右键单击删除组合框中的选定项

问题是,当您使用event
SelectedIndexChanged
时,它没有
MouseEventArg
作为参数,这意味着您无法定义按下了哪个鼠标按钮

另一方面,当您使用event
MouseDown
时,它无法检测
SelectedIndexChanged
。只有一种情况下,
MouseDown
在按下
按钮时起作用。右键
,单击没有打开下拉菜单的
组合框
(基本上是右键单击
组合框

你有什么建议吗

到目前为止,我所尝试的:

private void combobox1_MouseUp(object sender, MouseEventArgs e)
{
    if (e.Button == System.Windows.Forms.MouseButtons.Right)
        MessageBox.Show("mouse up");
}

private void combobox1_SelectedIndexChanged(object sender, EventArgs e)
{
    if ((cmbSearch.SelectedIndex) != (-1))
    {
        combobox1.Items.RemoveAt(cmbSearch.SelectedIndex);
    }
}

我用一堆项目设置了comboBox,并将其设置为
下拉列表

我已将处理程序添加到
MouseDown
事件中

private void comboBox1_MouseDown(object sender, MouseEventArgs e)
{
    if (e.Button != MouseButtons.Right)
        return;
    comboBox1.SelectedIndex = -1;
}
如果选择了任何项目,当您右键单击组合框时,它将取消选择所选项目


现在,如何在
SelectedIndexChanged
中处理此更改是完全不同的项目。希望这能回答您的问题。

为什么要在组合框显示时从中删除项目?从一开始这似乎是个坏主意。你能写你的用例吗?比如,用户选择项目,点击这里,点击那里,预期行为,等等<代码>使用event SelectedIndexChanged时,它没有鼠标eventarg这一事实是正常的。因为
SelectedIndexChanged
是组合框的事件,而
MouseEventArg
是用户的事件activity@T.S.我已经告诉过用例,我需要在右键单击时删除所选项目,如果您有任何建议,请让我知道……@tonni请查看我的答案。希望您想要的是什么,还是希望从列表中完全删除您的项目?这就是为什么我要求给出一步一步的用户操作。这就是您定义需求的方式