как зафиксировать событие при щелчке правой кнопкой мыши на вкладке с помощью winforms в powershell

#powershell #winforms #tabs #event-handling #right-click

Вопрос:

Я хочу запустить событие при щелчке правой кнопкой мыши на вкладке, не содержимое, отображаемое на вкладке, а сами вкладки.

До сих пор я пытался использовать выбранное событие для tabcontrol:

 $maintab.add_selected({do something here})
 

это срабатывает только при щелчке левой кнопкой мыши на вкладках

Я также перепробовал все это, похоже, они не реагируют на щелчки в любом месте в элементе управления вкладками или на страницах вкладок

 $maintab.add_mouseUP({do something here})
$maintab.add_mouseDown({do something here})
$maintab.add_click({do something here})
$maintab.add_selecting({do something here})
 

Я также попытался захватить событие mouseUP для страниц вкладок, которые были добавлены в tabcontrol:

 $tabpage.add_mouseUp({do something here})
 

Это работает только при нажатии на область содержимого под вкладкой, а не на сами вкладки.

Возможно ли это вообще?

Ответ №1:

Я думаю, что вы правы, используя MouseUP событие в элементе управления главной вкладки.

Ниже показано, как вы можете определить, какая из этих вкладок была нажата:

 $maintab.Add_mouseUP({
    param($sender,$e)
    if ($e.Button -eq [System.Windows.Forms.MouseButtons]::Right) {
        # this part checks if on of the actual tabs is right-clicked
        for ($i = 0; $i -lt $this.TabCount; $i  ) {
            if ($this.GetTabRect($i).Contains($e.Location)) {
                # do something here
                Write-Host "Right-click on tab $($this.TabPages[$i].Text)"
                break
            }
        }
    }
})
 

Комментарии:

1. вы знаете, это действительно странно, у меня была эта строка, закомментированная в моей программе из предыдущего тестирования $maintab.add_mouseUP({объект узла записи: $this.name событие: $_.кнопка}). технически все, что я сделал,-это не комментировал это, и это работает сейчас. Я сделал некоторое обновление и откат VSC сначала, но я не вижу, как это повлияет на него! в любом случае, спасибо, что указали мне верное направление!