在VB中如何现实按下Command1后 执行 Command2的click

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在VB中如何现实按下Command1后 执行 Command2的click相关的知识,希望对你有一定的参考价值。

对 Command1 执行 click 后 同时 执行Command2的 click
该功能能否实现 该如何编写?

1)最“官方”的方法

Option Explicit

Private Sub Command1_Click()
    ' 利用 Command2.Value = True, 模拟Command2鼠标点击而引发Click事件
    ' 进而调用Command2 的Click事件处理程序
    Command2.Value = True
End Sub

Private Sub Command2_Click()
    Beep
End Sub

2)最“直接”的方法

Option Explicit

Private Sub Command1_Click()
    '直接调用Command2_Click
    Command2_Click
End Sub

Private Sub Command2_Click()
    Beep
End Sub

参考技术A 你双击一个按钮后,打开的代码就是那个按钮的click事件,如单击Command1就是
public sub Command1_click()
..
end sub
这就是这个按钮的事件,要调用这个方法只需要写上这个方法名就可以了,如Command1_click
参考技术B 完全可以
在Command1的Click事件中加入
Command2_click本回答被提问者和网友采纳

如何在 VB.NET 中检测多个修改按钮和按下的字符

【中文标题】如何在 VB.NET 中检测多个修改按钮和按下的字符【英文标题】:How to detect multiple modifier buttons and character pressed in VB.NET 【发布时间】:2016-01-05 16:28:40 【问题描述】:

在一个 VB.NET 项目中(在 VS2013 中工作),当用户按下 CTRL + LEFT SHIFT + M 时,我需要做一些事情。

我得到的最接近的是能够检测到一个修饰键和 M 键。

有this question here in SO,但提供的示例代码的唯一答案是检测字符键和一个或另一个修饰键,而不是两者。

我一直在寻找一段时间,我看到的唯一示例显示只检测到一个修饰键,我不知道如何检测两个修饰键和一个字符键。

这是我目前拥有的代码:

If My.Computer.Keyboard.CtrlKeyDown AndAlso My.Computer.Keyboard.ShiftKeyDown AndAlso (e.KeyCode And Not Keys.Modifiers) = Keys.M Then
    HideForm()
End If

看起来在 KeyDown 事件中只检测到一个键,我猜这是有道理的,因为该事件将为每个键单独触发。

那么如何检测三个键都被按下的时间呢?

【问题讨论】:

If e.Control AndAlso e.Shift AndAlso e.KeyCode = Keys.M Then 不,不是,拉尔斯。 :( 在 KeyDown 事件中,它只检测被按下的第一个键。因此,如果我执行 CTRL + SHIFT + M 它只会获得 CRTL(e.Control 对于您的代码是正确的),如果我执行 SHIFT + CTRL + M然后它只是获取 shift 键(e.Shift 为真)。 只是为了澄清:它不可能(有意义地)调试 KeyDown 事件处理程序,因为它总是会在第一次按键时中断 【参考方案1】:

尝试在您正在使用的表单上使用 ProcessCmdKey 覆盖:

Protected Overrides Function ProcessCmdKey(ByRef msg As Message, keyData As Keys) As Boolean
  If keyData = (Keys.Control Or Keys.Shift Or Keys.M) Then
    ' do something
    Return True
  End If
  Return MyBase.ProcessCmdKey(msg, keyData)
End Function

【讨论】:

宾果游戏!做到了。谢谢,拉斯。 我会很感激解释为什么在这里需要覆盖 ProcessCmdKey 并且 KeyDown/PreviewKeyDown 不起作用 @AlexB。 ProcessCmdKey 发生在表单上的任何其他内容之前。不知道为什么 KeyPreview = true 对您不起作用,但 KeyPreview 是 VB6 时代的旧保留。 该死,我想我忘了告诉 @marky 关于设置 KeyPreview=true ;) 感谢您的澄清 我确实将表单的 KeyPreview 属性设置为 True,所以和你们两个一样,我不确定为什么最初建议的解决方案不起作用...

以上是关于在VB中如何现实按下Command1后 执行 Command2的click的主要内容,如果未能解决你的问题,请参考以下文章

vb中如何让一个按钮调用另一个按钮中的数组

VB中使用Frame时覆盖了其他控件如何解决??

请问vb中的move函数的使用方法有哪些?

vb怎么每隔一秒自动点击按钮

vb listview上被选择的多个行的某个列的内容怎样得到?

vb中shell使批处理完成后再执行后续指令