none
vs2008 .net 中如何用代码编写组合键? RRS feed

  • 问题

  • 如题:我使用的是一个第三方控件,其中文本框的换行需要Ctrl+Enter,我想让它在keydown事件中直接将Enter转换成Ctrl+Enter,谢谢各位大侠们??
    2009年6月10日 7:50

答案

  • Public Class MyXXX
        Inherits XXX

        Protected Overrides Function ProcessKeyEventArgs(ByRef m As Message) As Boolean
            Const WM_KEYDOWN As Integer = &H100
            If m.Msg = WM_KEYDOWN Then
                If m.WParam = Keys.Enter Then
                    m.WParam = Keys.Enter + Keys.Control
                End If
            End If

            Return MyBase.ProcessKeyEventArgs(m)
        End Function


    End Class


    http://feiyun0112.cnblogs.com/
    • 已标记为答案 Weber Li 2009年6月12日 13:23
    2009年6月11日 1:58
    版主

全部回复

  • 你好!
         不清楚他这个控件是怎样实现这个功能键的,你先试试:
         private XXX_KeyDown(object sender ,KeyEventArgs e)
         {
                if(e.KeyCode==Keys.Enter)
                {
                        ...
                }
           }
           如果捕获不到,就需要重写这个控件了,如果他没有提供这样的许可,应该就没有办法了!
    周雪峰
    2009年6月10日 9:18
    版主
  • Public Class MyXXX
        Inherits XXX

        Protected Overrides Function ProcessKeyEventArgs(ByRef m As Message) As Boolean
            Const WM_KEYDOWN As Integer = &H100
            If m.Msg = WM_KEYDOWN Then
                If m.WParam = Keys.Enter Then
                    m.WParam = Keys.Enter + Keys.Control
                End If
            End If

            Return MyBase.ProcessKeyEventArgs(m)
        End Function


    End Class


    http://feiyun0112.cnblogs.com/
    • 已标记为答案 Weber Li 2009年6月12日 13:23
    2009年6月11日 1:58
    版主