본문 바로가기

VB.NET

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

반응형

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] 에서 소개되고 있다.

반응형