スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
vb.net EnterキーでTabキーと同じ動きに。継承

VisualStudioで開発を行う際に、DataGridViewを使用したとき、
複数の入力項目がある場合は、入力が完了してEnterキー押下で次の入力項目にフォーカスが遷移してくれると
使いやすい。

しかしながら、標準のDataGridViewには、そのような機能がない。
そんなときには、DataGridViewクラスを継承してあげましょう。

継承とは、もとからあるクラスの機能拡張みたいなものか・・・?
継承する際には、追加する機能だけを記述したらいいから、
記述するコードの中身自体は結構少ない。


'''
''' Enterキーが押された時に、Tabキーが押されたのと同じ動作をする
''' (現在のセルを隣のセルに移動する)DataGridView
'''

Public Class DataGridViewEx
Inherits DataGridView

System.Security.Permissions.SecurityAction.Demand, _
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.SecurityAction.Demand, _
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


継承のソースコードは出回っているけど、それをどこに記述して、どうしたら機能を使えるのか。
その辺分かっていないと、難しい。プログラミングの敷居が高く感じられるのも、
環境構築とかがよく分からないって点が多くを占めている気がする。(自分を含め)

とりあえず動いたのでメモ。
適当にclassファイルを作成して、上記のコードを記述した。
class1.png

リビルドしてから、レイアウト画面のツールボックスを見ると、出てきた。
先ほど機能を追加したDataGridViewがいた。
無題

Formに張り付けて、実行してみると、たしかにEnter押下でTabと同じ動きになった。

めでたしめでたし。
スポンサーサイト
vb.net 連番のついたコントロールを一括で操作する方法 | Home | XAMPPでPHP実行環境をサクっと構築

Comment

Post comment

Secret

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。