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

    介绍 在设计表单时,属性AcceptButton和KeyPreview对于自动响应用户操作(如按Enter-key, ESC-key等)非常有用。当您创建自己的用户控件时,这些属性不可用。至少,现在还不是时候。 背景 使用Windows内置的消息传递系统可以帮助我们解决这个问题。 这就是我们的工作和编码 我们必须实现的一点是,当用户按下我们想要作出反应的键时,我们要得到通知。比如说,你设计了一个搜索对话框用户控件,就像Windows资源管理器中的文件搜索一样。当用户按下Enter-key时,搜索应该开始。为了确定按下的键,可以为每个子控件使用_KeyUp-event,这使得代码看起来很糟糕,而且不是干净的编程风格。这就是我们的用户控件键预览功能的作用。要在用户控件级别上实现键验证,我们使用. net框架的UserControl基类实现的函数ProcessKeyPreview。要获得对它的控制,只需在类级别上声明对它的重写。 隐藏,复制Code

    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/news907.html

  • 相关阅读:
    HDU4385Moving Bricks【状压DP】
    用位运算实现加减法
    hdu 1874(最短路 Dilkstra +优先队列优化+spfa)
    codeforces 782B The Meeting Place Cannot Be Changed+hdu 4355+hdu 2438 (三分)
    hdu 1542(线段树+扫描线 求矩形相交面积)
    hdu 2602(经典01背包)
    hdu 1698(线段树区间更新)
    hdu 1754(单点更新 ,区间最大值)
    NYOJ 寻找最大数
    hdu 2222(AC自动机模版题)
  • 原文地址:https://www.cnblogs.com/Dincat/p/13456169.html
Copyright © 2011-2022 走看看