#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 сначала, но я не вижу, как это повлияет на него! в любом случае, спасибо, что указали мне верное направление!