如何在powershell中使用winforms右键单击选项卡时捕获事件
Posted
技术标签:
【中文标题】如何在powershell中使用winforms右键单击选项卡时捕获事件【英文标题】:how to capture event when right clicking on tab using winforms in powershell 【发布时间】:2021-10-10 20:29:29 【问题描述】:我想在右键单击选项卡时触发一个事件,不是选项卡显示的内容,而是tabs 本身。
到目前为止,我已经尝试过为 tabcontrol 使用 selected 事件:
$maintab.add_selected(do something here)
这仅在左键单击选项卡时触发
我也尝试了所有这些,它们似乎对 tabcontrol 或 tabpages 中的任何地方的点击都没有响应
$maintab.add_mouseUP(do something here)
$maintab.add_mouseDown(do something here)
$maintab.add_click(do something here)
$maintab.add_selecting(do something here)
我还尝试为已添加到 tabcontrol 的标签页捕获 mouseUP 事件:
$tabpage.add_mouseUp(do something here)
这仅在单击选项卡下方的内容区域时有效,而不是选项卡本身。
这可能吗?
【问题讨论】:
【参考方案1】:我认为在 maintab 控件上使用 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
)
【讨论】:
你知道这很奇怪,我在之前的测试中在我的程序中注释掉了这一行 $maintab.add_mouseUP(write-host object: $this.name event: $_.button) .从技术上讲,我所做的只是取消评论它现在可以工作了。我确实先对 VSC 进行了一些更新和回滚,但我不知道这会如何影响它!无论哪种方式,感谢您为我指明正确的方向!以上是关于如何在powershell中使用winforms右键单击选项卡时捕获事件的主要内容,如果未能解决你的问题,请参考以下文章
C# Winform程序中使用DataGridView时单元格无法显示全部内容时,如何右对齐,省略号在左边。
C# winform datagridview中如何实现鼠标右键点击一行数据出现一个带有删除的菜单,并能执行删除操作?