Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何在vbnet中创建按钮快捷方式_Vb.net - Fatal编程技术网

Vb.net 如何在vbnet中创建按钮快捷方式

Vb.net 如何在vbnet中创建按钮快捷方式,vb.net,Vb.net,我尝试为我的按钮创建快捷键 这是我的密码 Private Sub form_main_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress If Keys.ControlKey + Keys.N Then 'btn_add.PerformClick() addentry() ElseIf Key

我尝试为我的按钮创建快捷键

这是我的密码

 Private Sub form_main_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
    If Keys.ControlKey + Keys.N Then
        'btn_add.PerformClick()
        addentry()
    ElseIf Keys.ControlKey + Keys.E Then
        'btn_edit.PerformClick()
        editentry()
    End If
End Sub
问题是,即使我按下其他按钮,该函数仍被调用。我还尝试使用form
keydown
属性,但结果仍然相同

其他信息:

  • 函数
    addentry
    editentry
    将只调用
    表单_addedit
  • btn\u add
    将调用
    addentry
  • btn\u edit
    将调用
    editentry

首先,
键。***
只是一个枚举。其中的每个条目都只是一个数字,代表一个键代码。所以你现在只是把数字加在一起

Keys.ControlKey
是17,而
Keys.N
是78,所以你可以这样写:

If 17 + 78 Then
它将始终返回
True
,因为它大于0

要执行要求的操作,必须通过检查传递给事件的事件参数(EventArgs)来检查按下了哪个键

但是由于您使用的是
KeyPress
事件,因此无法从事件参数中获取密钥枚举,因此我建议您改用
KeyDown
事件

Private Sub form_main_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    If e.Control = True AndAlso e.KeyCode = Keys.N Then
        addentry()
    ElseIf e.Control = True AndAlso e.KeyCode = Keys.E Then
        editentry()
    End If
End Sub

首先,
键。***
只是一个枚举。其中的每个条目都只是一个数字,代表一个键代码。所以你现在只是把数字加在一起

Keys.ControlKey
是17,而
Keys.N
是78,所以你可以这样写:

If 17 + 78 Then
它将始终返回
True
,因为它大于0

要执行要求的操作,必须通过检查传递给事件的事件参数(EventArgs)来检查按下了哪个键

但是由于您使用的是
KeyPress
事件,因此无法从事件参数中获取密钥枚举,因此我建议您改用
KeyDown
事件

Private Sub form_main_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    If e.Control = True AndAlso e.KeyCode = Keys.N Then
        addentry()
    ElseIf e.Control = True AndAlso e.KeyCode = Keys.E Then
        editentry()
    End If
End Sub

如果您在按钮的.Text属性中放置了一个与号,Alt+键将启动按钮,例如B&utton1将使用Alt+u启动。

如果您在按钮的.Text属性中放置了一个与号,Alt+键将启动按钮,例如B&utton1将使用Alt+u启动。

谢谢它的工作。但我忍不住要问,为什么除了那些已经按下的键外,我按下其他键时会有“叮”的声音shortcuts@pwalaako2当前位置总是有,这是任何形式的标准。如果您向项目中添加一个全新的表单,然后按任意组合键,它也会这样做。谢谢,它可以工作。但我忍不住要问,为什么除了那些已经按下的键外,我按下其他键时会有“叮”的声音shortcuts@pwalaako2当前位置总是有,这是任何形式的标准。如果你向你的项目中添加一个全新的表单,然后按一个随机组合键,它也会这样做。我试过了,但它有点搞乱了我的应用程序的视图,因为我的按钮上有图像。。。老实说,我不知道它是怎么工作的假设你指的是常规按钮而不是toolstrip按钮,如果你根本不想显示文本,在文本之前的文本属性中添加一行或多行空行,将文本推到视图之外。是的,常规按钮。。。啊,顺便说一句,由于文本属性将以alt+u的形式激发,所以只会“&u”?它也会忽略符号前的空格吗?对这两个问题都是。我试过了,但它有点搞乱了我的应用程序的视图,因为我的按钮上有图像。。。老实说,我不知道它是怎么工作的假设你指的是常规按钮而不是toolstrip按钮,如果你根本不想显示文本,在文本之前的文本属性中添加一行或多行空行,将文本推到视图之外。是的,常规按钮。。。啊,顺便说一句,由于文本属性将以alt+u的形式激发,所以只会“&u”?它还会忽略符号前的空格吗?对这两个问题都是肯定的。