【问题标题】:KeyEventArgs and MouseEventArgsKeyEventArgs 和 MouseEventArgs
【发布时间】:2013-08-20 03:25:58
【问题描述】:

我正在尝试制作一个同时处理输入和点击的按钮。我已经设置了我的子过程来处理按键和鼠标点击,但是我无法从 EventrArs 访问 MouseEventArgs,也无法从 System.EventArgs 访问 KeyEventArgs。我该怎么做?

【问题讨论】:

  • 你不能那样做。告诉我们你为什么这样做。

标签: vb.net button onclick enter eventargs


【解决方案1】:

虽然您的问题不是很清楚,但听起来您正在尝试“来自”System.EventArgs 的键盘事件?

我不完全确定您的问题,但在您的问题中发布代码将有助于我们提供准确的答案。

以下我假设我猜你的问题与下面的示例相关:

EventArgs 是一个类型,它也是所有事件的基本类型。

您似乎想要一个可以同时处理点击和按键的子例程。

以下子例程“e_Handler”将接受MouseEventArgsKeyEventArgsKeyPressEventArgs,方法是检查事件类型并将其转换为变量,然后您可以在其中测试或使用相应的结果状态。:

' Handler for 3 event types:

Sub e_Handler(Sender As Object, E As EventArgs)

    If TypeOf E Is MouseEventArgs Then
        Dim K As MouseEventArgs = CTypeDynamic(Of MouseEventArgs)(E)

        MsgBox("Clicked Mouse at position " & K.Location.ToString & " on " & Sender.ToString)
    End If

    If TypeOf E Is KeyPressEventArgs Then
        Dim K As KeyPressEventArgs = CTypeDynamic(Of KeyPressEventArgs)(E)

        MsgBox("Pressed the key " & K.KeyChar & " on " & Sender.ToString)
    End If

    If TypeOf E Is KeyEventArgs Then
        Dim K As KeyEventArgs = CTypeDynamic(Of KeyEventArgs)(E)

        MsgBox("Pressed the key " & K.KeyCode & " on " & Sender.ToString)
    End If

    Me.Text = E.ToString

End Sub

然后您可以将此例程设置为任意数量的事件和控件的处理程序:

Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load

    AddHandler Me.MouseClick, AddressOf e_Handler
    AddHandler Me.KeyPress, AddressOf e_Handler
    AddHandler Me.KeyDown, AddressOf e_Handler


    For Each C As Control In Me.Controls
        AddHandler C.MouseClick, AddressOf e_Handler
        AddHandler C.KeyDown, AddressOf e_Handler
        AddHandler C.KeyPress, AddressOf e_Handler
    Next
End Sub

编辑:

CTypeDynamic 的使用是为了避免编译器“隐式转换”警告,并确保如果您将项目设置为使用 Option Strict

编译,该方法不会抛出和异常

【讨论】:

  • 我通过使用Me.AcceptButton 属性以不同的方式解决了这个问题。
猜你喜欢
  • 2020-01-13
  • 1970-01-01
  • 2012-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-02
  • 2020-12-07
相关资源
最近更新 更多