以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]是不是有e参数的事件代码不能作成内部函数 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=179319) |
-- 作者:2425004926 -- 发布时间:2022/8/18 9:20:00 -- [求助]是不是有e参数的事件代码不能作成内部函数 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 |
-- 作者:有点蓝 -- 发布时间:2022/8/18 9:29:00 -- 可以的,把e作为函数参数传入函数即可 |
-- 作者:2425004926 -- 发布时间: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")) ‘出错 |
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间: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) |
-- 作者:有点蓝 -- 发布时间: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)
|