找回密码
 立即注册

QQ登录

只需一步,快速开始

sxyweiren

中级会员

73

主题

366

帖子

755

积分

中级会员

积分
755

活字格认证微信认证勋章

sxyweiren
中级会员   /  发表于:2014-1-7 14:17  /   查看:8162  /  回复:5
在VB6的Source里,如果鼠标左键单击“取消”按钮,会取消ImText的Leave事件。
比如:
Private Sub cmdExit_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then
        bolCancelf = True
    End If
End Sub
Private Sub imt_Test_LostFocus()
    If bolCancelf = True Then
    Else
        ...
    End IF
Exit Sub

但是移行到VB.net的时候,会先触发LostFocus事件,然后才触发MouseDown事件。这样的话会多走一些逻辑,造成VB6跟VB.net的效果不一致了。

这个问题如何解决?

5 个回复

倒序浏览
linnerchen
中级会员   /  发表于:2014-1-7 15:32:00
沙发
事件的顺序遵循.net标准,所以你应当对的你代码做出修改,在button的click或MouseDown事件里处理你的逻辑。
回复 使用道具 举报
sxyweiren
中级会员   /  发表于:2014-1-8 09:05:00
板凳
回复 2楼linnerchen的帖子

但是那样的话我的光标从InputMan里面离开的处理就没了。
回复 使用道具 举报
Leo
超级版主   /  发表于:2014-1-8 16:35:00
地板
那个啥,我猜测按照你的代码的写法,在 InputMan 控件的 LostFocus 事件里面,你是期望做这样的逻辑判断:如果用户按下了 Cancel 按钮,我就什么都不处理,否则处理一些诸如值校验的逻辑,对么?
回复 使用道具 举报
sxyweiren
中级会员   /  发表于:2014-1-10 16:28:00
5#
回复 4楼Leo的帖子

对,就是这个想法。。。
回复 使用道具 举报
Leo
超级版主   /  发表于:2014-1-10 17:52:00
6#
.NET 提供了另一套解决方案叫做 Validation。
你看看这个模型适合不?
  1. Public Class Form1

  2.     Dim _cancelButtonClick = False

  3.     Protected Overrides Sub OnLoad(e As EventArgs)
  4.         MyBase.OnLoad(e)
  5.         ' Cancel Button.
  6.         Me.Button1.CausesValidation = False
  7.     End Sub

  8.     Private Sub TextBox1_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating
  9.         Debug.WriteLine(e.Cancel)
  10.     End Sub

  11.     Private Sub TextBox1_Validated(sender As Object, e As EventArgs) Handles TextBox1.Validated
  12.         If (_cancelButtonClick) Then
  13.             Return
  14.         Else
  15.             ' Do your validation logic here.
  16.         End If
  17.     End Sub

  18.     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  19.         _cancelButtonClick = True
  20.         Me.Close()
  21.         _cancelButtonClick = False
  22.     End Sub
  23. End Class
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部