RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
关于vb.net事件注册的信息

vb.net中如何执行键盘事件?

执行键盘事件方法如下:

为疏附等地区用户提供了全套网页设计制作服务,及疏附网站建设行业解决方案。主营业务为网站制作、成都网站制作、疏附网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

第一步,点击VS工具。

第二步,打开后,新建一个Windows窗体应用程序。

第三步,请看右下方Form的属性栏。

第四步,双击KeyDown。

第五步,输入提示按键代码,如图所示。

第六步,再次输入代码,设置属性KeyPreview为true。

第七步,运行程序,按下举例F5,则会弹出提示,表明已经成功获。

如何在VB.NET中调用别的控件的事件

这些问题的确头大,vb的dll、ocx等,在vb.net里都不好调用,主要是来要注册组件等,麻烦。建议全部用vb.net写就好了,

vb.net多个过程handles一个事件

这个执行顺序由.net内部处理和维护

现在我测试了下,如果动态添加delegate的话,那么事件调用就会按照添加的先后顺序来执行

不过在过程里直接用"handles 某个事件"来指定的话,顺序就不一定了,比如我测试你的代码就是3,1,2的循序,和处理过程的名字应该没什么关系

不过事件的处理过程会按照在invocation list里的循序来执行

给你一段代码

Function GetHandlers(ByVal instance As Object, ByVal e As String) As String

Dim pi As PropertyInfo = GetType(Button).GetProperty("Events", BindingFlags.Instance Or BindingFlags.NonPublic)

Dim ehl As EventHandlerList = CType(pi.GetValue(instance, Nothing), EventHandlerList)

Dim fi As FieldInfo = GetType(Control).GetField("Event" e, BindingFlags.Static Or BindingFlags.NonPublic)

Dim d As [Delegate] = ehl(fi.GetValue(Nothing))

Dim handlerStr As String = Nothing

If (d Nothing) Then

For Each i As [Delegate] In d.GetInvocationList()

handlerStr = handlerStr i.Method.Name vbCrLf

Next

Else

handlerStr = "无"

End If

Return handlerStr

End Function

调用gethandlers函数可以得到某个控件的某个事件注册的所有handler,这个顺序就是真正的调用顺序了

但我觉得还是应该不要太过依赖这部分内容,不管是用handles还是addhandler,现在是这样,以后的版本说不定就变成其他了,因为ms并没有对他们有过任何的明文说明

C#代码转换成VB.net,事件注册处理方法

'api.OnFrontConnected += new FrontConnected(OnFrontConnected);

AddHandler api.OnFrontConnected, AddressOf OnFrontConnected

有关VB.NET keypress 事件的问题

定义两个变量

Private run As Boolean = False'过程是否在运行

Private Key_L As Boolean = False'L键是否按下

变通方法:加定时器,要执行的过程放在定时器中调用

keypress事件只检测某个键是否按下

在家里没有VS,引用我以前的例子给你,定义的是全局键盘,也就是在程序不激活的状态也能执行

下面是完整代码: ----按下L键过程xx只会执行一次,直到过程执行完成才再次响应

Public Class Form1

Private run As Boolean = False

Private Key_L As Boolean = False

Public Declare Auto Function RegisterHotKey Lib "user32.dll" Alias _

"RegisterHotKey" (ByVal hwnd As IntPtr, ByVal id As Integer, ByVal fsModifiers As Integer, ByVal vk As Integer) As Boolean

Public Declare Auto Function UnRegisterHotKey Lib "user32.dll" Alias _

"UnregisterHotKey" (ByVal hwnd As IntPtr, ByVal id As Integer) As Boolean

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

'注册全局热键

RegisterHotKey(Handle, 0, 7, Keys.C)

RegisterHotKey(Handle, 1, Nothing, Keys.L)

' 0=nothing 1 -alt 2-ctrl 3-ctrl+alt 4-shift 5-alt+shift 6-ctrl+shift 7-ctrl+shift+alt

End Sub

Private Sub Form1_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed

UnRegisterHotKey(Handle, 0)

UnRegisterHotKey(Handle, 1)

End Sub

Protected Overrides Sub WndProc(ByRef m As Message)

If m.Msg = 786 Then

If m.WParam.ToInt32 = 1 Then

Key_L = True

'MsgBox(m.Msg "我1")

ElseIf m.WParam.ToInt32 = 0 Then

MsgBox(m.Msg "我2")

End If

'TextBox1.Text = " " m.Msg

End If

MyBase.WndProc(m)

End Sub

Sub xx()

run = True

Button1.Enabled = False

For i = 0 To 100

TextBox1.Text = i.ToString

Threading.Thread.Sleep(1)

Application.DoEvents()

Next

Button1.Enabled = True

Key_L = False

run = False

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

If run = True Then Exit Sub

If Key_L = True Then xx()

End Sub

End Class


文章名称:关于vb.net事件注册的信息
文章链接:http://cqwzjz.cn/article/dooesjg.html