Foxtable(狐表)用户栏目专家坐堂 → [求助]是不是有e参数的事件代码不能作成内部函数


  共有6987人关注过本帖树形打印复制链接

主题:[求助]是不是有e参数的事件代码不能作成内部函数

帅哥哟,离线,有人找我吗?
2425004926
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:715 积分:5585 威望:0 精华:0 注册:2019/11/14 9:36:00
[求助]是不是有e参数的事件代码不能作成内部函数  发帖心情 Post By:2022/8/18 9:20:00 [只看该作者]

KeyDown事件,功能是限制空格和粘帖,因为用到多处,想着能否作成内部函数,因为有e参数,是不是有e参数的事件代码不能作成内部函数

If e.KeyCode = Keys.Space Then '不能用空格
    e.Cancel = True
ElseIf ClipBoard.ContainsText Then '判断剪贴板中有字符
    Dim s As String = ClipBoard.GetText() '返回字符
    If s.Length >= 10 Then
        If e.Control = True AndAlso e.KeyCode = Keys.V Then 'Ctrl+V
            e.Cancel = True '必须先取消,否则直接粘帖
            Args(0).Text = left(s, 10) '再等于第一个字符
        End If
    End If
End If

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:112503 积分:572807 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/8/18 9:29:00 [只看该作者]

可以的,把e作为函数参数传入函数即可

 回到顶部
帅哥哟,离线,有人找我吗?
2425004926
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:715 积分:5585 威望:0 精华:0 注册:2019/11/14 9:36:00
  发帖心情 Post By:2022/8/18 10:00:00 [只看该作者]

老师再帮忙看一下,是哪里问题
If Args(0) = Keys.Space Then '不能用空格
    Args(1) = True
ElseIf ClipBoard.ContainsText Then '判断剪贴板中有字符
    Dim s As String = ClipBoard.GetText() '返回字符
    If s.Length >= 10 Then
        If Args(2) = True AndAlso Args(0) = Keys.V Then 'Ctrl+V
            Args(1) = True '必须先取消,否则直接粘帖
            Args(3).Text = left(s, 10) '再等于第一个字符
        End If
    End If
End If

Functions.Execute("_KeyDown", e.KeyCode, e.Cancel, e.Control, e.Form.Controls("TextBox1")) ’没起到作用,MessageBox.Show(Args(0)) ‘这个值返回32
Functions.Execute("_KeyDown", "e.KeyCode", "e.Cancel", "e.Control", e.Form.Controls("TextBox1")) ‘出错


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:112503 积分:572807 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/8/18 10:02:00 [只看该作者]

dim e = args(0)
If e.KeyCode = Keys.Space Then '不能用空格
    e.Cancel = True
ElseIf ClipBoard.ContainsText Then '判断剪贴板中有字符

Functions.Execute("_KeyDown", e, e.Form.Controls("TextBox1"))

 回到顶部
帅哥哟,离线,有人找我吗?
2425004926
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:715 积分:5585 威望:0 精华:0 注册:2019/11/14 9:36:00
  发帖心情 Post By:2022/8/18 10:17:00 [只看该作者]

 感谢老师!非常好! 总结一下代码
KeyDown事件,功能是限制空格和快捷键粘帖

Dim e = args(0)
If args(0).KeyCode = Keys.Space Then '不能用空格
    args(0).Cancel = True
ElseIf ClipBoard.ContainsText Then '判断剪贴板中有字符
    Dim s As String = ClipBoard.GetText() '返回字符
    If s.Length >= args(1) Then
        If args(0).Control = True AndAlso args(0).KeyCode = Keys.V Then 'Ctrl+V
            args(0).Cancel = True '必须先取消,否则直接粘帖
            args(0).Sender.Text = left(s, args(1)) '取剪贴板前几个字符
        End If
    End If
End If

’Functions.Execute("_KeyDown", args(0),取前面字符个数, 控件)
Functions.Execute("_KeyDown", e, 10,e.Form.Controls("TextBox1"))
Functions.Execute("_KeyDown", e, 10,e.sender)


 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:112503 积分:572807 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/8/18 10:21:00 [只看该作者]

何必画蛇添足

Dim e = args(0)
If e.KeyCode = Keys.Space Then '不能用空格
    e.Cancel = True

第3个参数根本没有用到也没有必要传入

Functions.Execute("_KeyDown", e, 10)

 回到顶部