- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问候
Public Const CTRL_Key As Integer = &H2
Public Const Hot_Key As Integer = &H312
Public Declare Function RegisterHotKey Lib "user32" (ByVal hwnd As IntPtr, ByVal id As Integer, ByVal fsModifiers As Integer, ByVal vk As Integer) As Integer
Public Declare Function UnregisterHotKey Lib "user32" (ByVal hwnd As IntPtr, ByVal id As Integer) As Integer
Private Sub Hot_Key_Register() Handles MyBase.Load
RegisterHotKey(Me.Handle, 100, CTRL_Key, Keys.NumPad1)
RegisterHotKey(Me.Handle, 200, CTRL_Key, Keys.NumPad2)
RegisterHotKey(Me.Handle, 300, CTRL_Key, Keys.NumPad3)
End Sub
Protected Overrides Sub WndProc(ByRef Window_Message As Message)
If Window_Message.Msg = Hot_Key Then
Dim id As IntPtr = Window_Message.WParam
Select Case (id.ToString)
Case "100"
CMS_01.Show(Cursor.Position.X, Cursor.Position.Y)
Case "200"
CMS_02.Show(Cursor.Position.X, Cursor.Position.Y)
Case "300"
CMS_03.Show(Cursor.Position.X, Cursor.Position.Y)
End Select
End If
MyBase.WndProc(Window_Message)
End Sub
最佳答案
选项 1 - 使用 NotifyIcon
您可以使用的最简单的修复方法是使用不可见的 NotifyIcon
组件在其内部处理这种情况 code .
将 NotifyIcon
的实例拖放到您的表单上,然后使用它来显示上下文菜单,将上下文菜单条分配给它的 ContextMenuStrip
属性,然后使用反射调用其 ShowContextMenu
私有(private)方法。
示例
Private Sub ShowContextMenu(menu As ContextMenuStrip)
NotifyIcon1.Visible = False
NotifyIcon1.ContextMenuStrip = menu
Dim m = NotifyIcon1.GetType().GetMethod("ShowContextMenu",
Reflection.BindingFlags.NonPublic Or Reflection.BindingFlags.Instance)
m.Invoke(NotifyIcon1, Nothing)
End Sub
Protected Overrides Sub WndProc(ByRef Window_Message As Message)
If Window_Message.Msg = Hot_Key Then
Dim id As IntPtr = Window_Message.WParam
Select Case (id.ToString)
Case "100"
ShowContextMenu(CMS_01)
End Select
End If
MyBase.WndProc(Window_Message)
End Sub
选项 2 - 使用 native 窗口
这是不使用 NotifyIcon
的修复方法, 使用 NativeWindow
.下面这段代码关心事件窗口,如果当前窗体处于事件状态,则不使用 native 窗口,否则创建并使用 native 窗口。
示例
Private window As NativeWindow
Private Sub ShowContextMenu(menu As ContextMenuStrip, p As Point)
If (Form.ActiveForm IsNot Me) Then
If (window Is Nothing) Then
window = New NativeWindow()
window.CreateHandle(New CreateParams())
End If
SetForegroundWindow(window.Handle)
End If
menu.Show(p)
End Sub
并显示菜单:
ShowContextMenu(CMS_01, Cursor.Position)
请记住在关闭/处理表单时释放窗口句柄:
If (window IsNot Nothing) Then
window.DestroyHandle()
window = Nothing
End If
关于.net - 当窗体没有焦点时激活 ContextMenuStrip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53896842/
我能够在 Windows 窗体外成功显示 ContextMenuScript (CMS)。 我可以使用鼠标指针选择/单击项目。 但是,当表单未获得焦点时,它不喜欢键盘控制(向上/向下箭头、转义)。 如
我有一个带有ContextMenuStrip的DataGridView。ContextMenuStrip 的默认行为是自动关闭 - 即在用户与其交互时立即关闭。我已关闭此功能以允许多个用户交互(这就是
我有一个包含很多项目的 ContextMenuStrip。 如何处理鼠标滚轮来滚动项目? 我在网上搜索,但没有找到有用的东西。 或者如何从上下文菜单中获取第一个/最后一个显示/可见的项目? 最佳答案
我正在尝试为我的应用程序创建一个专门的工具栏,它由几个按钮组成,单击这些按钮时应在它们上方显示一个 ContextMenuStrip 并提供一些选择。看来我无法将此菜单绘制在正确的位置。 下面是重现问
当我更改 ToolStripLabel 的文本时在我的上下文菜单中,当我更改菜单项的文本时,上下文菜单不会像预期的那样自动调整大小。 然后看起来像这样: 如何正确调整上下文菜单的大小? 我可以更改真实
如何根据值设置和获取上下文菜单条中项目的文本和/或背景的颜色值? 这段代码是正确的吗? ContextMenuStrip1.Items.Add("this is an item").BackColor
我正在尝试制作一个带有通知图标的 contextMenuStrip,但我无法将此上下文的位置放在鼠标位置上方。它显示在相同的位置鼠标 Context menu strip position Image
我从 ContextMenuStip 得到一些不稳定的行为: private void lstModules_MouseMove(object sender , MouseEventArgs e)
我目前正在开发 Windows 触摸应用程序。一些 winForm 代码仍然存在。如您所见,滚动/箭头按钮的高度对于触摸按钮来说确实太小了。有没有办法将高度增加到 35/40 像素? 以下链接是一个V
是否可以在选择/检查某些项目后让 ContextMenuStrip 保持打开状态? 我计划使用一个简单的 ContextMenuStrip 来设置过滤器(这样我就可以在菜单中或作为右键单击选项使用相同
我正在创建大量自定义控件并将它们添加到 FlowLayoutPanel。还有一个在设计时创建和填充的 ContextMenuStrip。 每次将控件添加到面板时,都会将其 ContextMenuStr
我有一个分配给几个不同列表框的 ContextMenuStrip。我试图弄清楚什么时候 ContextMenuStrip 被点击,它被用在什么 ListBox 上。我尝试了下面的代码作为开始,但它不起
我有一个 ContextMenuStrip,它显示可以由用户命名的项目;允许用户指定包含与符号的项目名称。当显示 ContextMenuStrip 时,项目将 & 符号视为转义序列,并在下一个字符下划
tl/dr:我第二次调用 ContextMenuStrip.Show 时,它不显示。 我正在构建一个在后台运行但在用户点击特定热键时在鼠标光标上显示下拉菜单的应用程序。 如果应用程序具有焦点,则这在
当我右键单击 ListView 列标题时,我显示了一个不同的 ContextMenuStrip,在 ListView 中显示了另一个。 class ListViewExx : ListView {
我有一个 ContextMenuStrip,我想在设计器中为其 ToolStripMenuItems 分配事件处理程序。如果我选择编辑项目集合,我可以编辑我添加的 ToolStripMenuItems
我正在寻找一种在 VB.net 中实现 TreeView 的好方法,其 contextMenuStrip 是基于表单中不同对象的状态而变化的。 具体来说,在下面的“TreeView”中,当对象 sta
当我在 datgridview 中右键单击一行时,我正在尝试创建一个显示上下文菜单的事件。 这是正在发生的问题的图片: 这是我目前使用的代码: Private Sub dgvStudents_Cell
我已经为我的 NotifyIcon(在系统托盘中)创建了 ContextMenuStrip。但是,ContextMenuStrip 的方向总是在左边。我注意到在许多其他应用程序(如 Skype)上,它
我确信这个问题的答案之前已经发布过。请原谅我,我想我只是没有想到正确的搜索字符串。 我拥有的是分配给拨号器托盘图标的上下文菜单条。这个想法是让用户设置各种号码并从菜单中选择用户定义的号码并启动拨号。
我是一名优秀的程序员,十分优秀!