zoukankan      html  css  js  c++  java
  • 用户控件上的默认按钮

    介绍

    在设计表单时,属性AcceptButton和KeyPreview对于自动响应用户操作(如按Enter-key, ESC-key等)非常有用。当您创建自己的用户控件时,这些属性不可用。至少,现在还不是时候。

    背景

    使用Windows内置的消息传递系统可以帮助我们解决这个问题。

    这就是我们的工作和编码

    我们必须实现的一点是,当用户按下我们想要作出反应的键时,我们要得到通知。比如说,你设计了一个搜索对话框用户控件,就像Windows资源管理器中的文件搜索一样。当用户按下Enter-key时,搜索应该开始。为了确定按下的键,可以为每个子控件使用_KeyUp-event,这使得代码看起来很糟糕,而且不是干净的编程风格。这就是我们的用户控件键预览功能的作用。要在用户控件级别上实现键验证,我们使用. net框架的UserControl基类实现的函数ProcessKeyPreview。要获得对它的控制,只需在类级别上声明对它的重写。

    Public Class myUserControl
    
        Public Event onEnterKey(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Public Event onF4(ByVal ControlName As String)
    
        Private Const WM_KEYDOWN = &H100
    
        Protected Overrides Function ProcessKeyPreview(ByRef m As _
                            System.Windows.Forms.Message) As Boolean
    
            If m.Msg = WM_KEYDOWN Then
                Select Case m.WParam.ToInt32
                    Case ConsoleKey.Enter
                        RaiseEvent onEnterKey(button01, New System.EventArgs)
                    Case ConsoleKey.F4
                        RaiseEvent onF4(MyBase.ActiveControl.Name)
                End Select
            End If
    
            Return MyBase.ProcessKeyPreview(m)
    
        End Function
    End Class

    总结

    使用这种技术,您可以向用户控件的使用者提供表单类样式的功能。您甚至可以实现一个名为AcceptButton或CancelButton的属性来实现更大的灵活性。

    本文转载于:http://www.diyabc.com/frontweb/news14706.html

  • 相关阅读:
    [Vue] #常见开发场景 #条件渲染#手动挂载 #组件方法的值驱动执行
    [JS高程] Typed Array 定型数组
    [JS高程]JavaScript中的RegExp对象
    [JS高程] Map 和 Set
    [JS高程] JavsScript 常用数组方法总结
    [JS高程] 字符串模式匹配方法
    自动化集成:Pipeline整合Docker容器
    自动化集成:Docker容器入门简介
    自动化集成:Jenkins管理工具详解
    分布式系统中,权限设计实践
  • 原文地址:https://www.cnblogs.com/Dincat/p/13488415.html
Copyright © 2011-2022 走看看