none
[TIPS] DataGridView에서 Enter 키를 누르면 옆의 셀에 포커스가 이동되도록 하는 방법 RRS feed

  • 질문

  • [TIPS] DataGridView에서 Enter 키를 누르면 옆의 셀에
    포커스가 이동되도록 하는 방법

    VB.NET / VB for MyLife

    2012년 8월 15일 수요일 오전 5:27

답변

  • MSDN의  [DataGridView.ProcessDataGridViewKey Method] 에, DataGridView로
    Enter 키를 눌렀을 때에, 오른쪽 커서 키를 눌렀을 때와 같은 동작을 실시하도록(듯이) 하는 코드가 소개되고 있습니다. 여기서 소개되고 있는
    방법은, DataGridView 클래스의 상속 클래스를 작성하여, ProcessDialogKey와 ProcessDataGridViewKey
    메소드를 오버라이드(override) 하고, Enter 키가 밀렸을 때에 ProcessRightKey 메소드를 호출하는
    방법입니다.

    이 MSDN의 샘플을 참고해 작성한, Enter 키를 누르는 것으로, Tab 키를 눌렀을 때와 같이, 근처의 셀에
    포커스가 이동하는 DataGridView의 상속 클래스를 이하에 나타냅니다.

    Imports System
    Imports System.Windows.Forms
    
    ''' <summary>
    
    ''' Enter키를 눌렀을때, Tab키가 눌러진것과 같은 동작을 시킨다.
    
    ''' 현재의 셀의 옆으로 포커스를 이동시킨다.
    
    ''' </summary>
    Public Class DataGridViewEx
        Inherits DataGridView
    
        <System.Security.Permissions.UIPermission( _
            System.Security.Permissions.SecurityAction.LinkDemand, _
            Window:=System.Security.Permissions.UIPermissionWindow.AllWindows)> _
        Protected Overrides Function ProcessDialogKey( _
                ByVal keyData As Keys) As Boolean
    
            'Enter키가 눌러졌을때, Tab키가 눌러진것처럼 꾸민다.
    
            If (keyData And Keys.KeyCode) = Keys.Enter Then
                Return Me.ProcessTabKey(keyData)
            End If
            Return MyBase.ProcessDialogKey(keyData)
        End Function
    
        <System.Security.Permissions.SecurityPermission( _
            System.Security.Permissions.SecurityAction.LinkDemand, _
            Flags:=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)> _
        Protected Overrides Function ProcessDataGridViewKey( _
                ByVal e As KeyEventArgs) As Boolean
    
            'Enter키가 눌러졌을때, Tab키가 눌러진것처럼 꾸민다.
    
            If e.KeyCode = Keys.Enter Then
                Return Me.ProcessTabKey(e.KeyCode)
            End If
            Return MyBase.ProcessDataGridViewKey(e)
        End Function
    End Class
    

    이것과는 별도의 방법으로 [DataGridView: Make Enter Key Move to Next Column] 에서 소개되고 있다.


    VB.NET / VB for MyLife

    2012년 8월 15일 수요일 오전 5:28