.net 右键单击“多重扩展列表框”以仅高亮显示一个选项

.net 右键单击“多重扩展列表框”以仅高亮显示一个选项,.net,winforms,powershell,listbox,mouseevent,.net,Winforms,Powershell,Listbox,Mouseevent,我有一个多扩展列表框,当我右键单击框中的某个项目时,我只希望选择该项目。我无法更改列表框的“SelectionMode”,因为当我左键单击时,它必须能够选择多个项目 下面是我的代码,当listbox是单个选择框时可以使用: $inputboxSelectedServers.add_MouseDown({ #listbox click event [System.Windows.Forms.MouseEventArgs]$e= $args[1]

我有一个多扩展列表框,当我右键单击框中的某个项目时,我只希望选择该项目。我无法更改列表框的“SelectionMode”,因为当我左键单击时,它必须能够选择多个项目

下面是我的代码,当listbox是单个选择框时可以使用:

$inputboxSelectedServers.add_MouseDown({                    #listbox click event
    [System.Windows.Forms.MouseEventArgs]$e= $args[1]
    if ($e.Button -eq  [System.Windows.Forms.MouseButtons]::Right){
        $index = $inputboxSelectedServers.IndexFromPoint($e.Location)
        $inputboxSelectedServers.SelectedIndex = $index
        $Menu2.Show($inputboxSelectedServers, $e.X, $e.Y)   #contextMenuStrip
    }
})

但我不知道如何更改鼠标右键单击行为,以仅选择鼠标实际点击的列表框项目。

好的,所以经过一段时间的修补,灵感点击。我所要做的就是右键单击
MultiExtended
listbox只选择一个项目,然后取消选择其他所有项目。在此代码中,for循环取消选择列表框中的所有项目,然后将
SelectedIndex
属性设置为鼠标右键单击的项目

$inputboxSelectedServers.add_MouseDown({
    [System.Windows.Forms.MouseEventArgs]$e= $args[1]
    if ($e.Button -eq  [System.Windows.Forms.MouseButtons]::Right){
        for($i=0;$i -lt $inputboxSelectedServers.Items.Count; $i++){
            $inputboxSelectedServers.SetSelected($i,$false)
        }

        $index = $inputboxSelectedServers.IndexFromPoint($e.Location)
        $inputboxSelectedServers.SelectedIndex = $index
        $Menu2.Show($inputboxSelectedServers, $e.X, $e.Y)
    }
})

好的,经过一段时间的修补,灵感来了。我所要做的就是右键单击
MultiExtended
listbox只选择一个项目,然后取消选择其他所有项目。在此代码中,for循环取消选择列表框中的所有项目,然后将
SelectedIndex
属性设置为鼠标右键单击的项目

$inputboxSelectedServers.add_MouseDown({
    [System.Windows.Forms.MouseEventArgs]$e= $args[1]
    if ($e.Button -eq  [System.Windows.Forms.MouseButtons]::Right){
        for($i=0;$i -lt $inputboxSelectedServers.Items.Count; $i++){
            $inputboxSelectedServers.SetSelected($i,$false)
        }

        $index = $inputboxSelectedServers.IndexFromPoint($e.Location)
        $inputboxSelectedServers.SelectedIndex = $index
        $Menu2.Show($inputboxSelectedServers, $e.X, $e.Y)
    }
})