おかげさまで35年!
★―― 情報の関連性を明確にし、見えない情報を見える形に変えていく・・・
必要とする場所に最適な形で情報を提供する、それがビットのソフトウエアコンセプトです。 since 1988 ――★
Public Class frmUriage
(略)
‘下の2行に見えるステートメントは1行が折り返している
Private Sub frmUriage_KeyDown(ByVal sender As System.Object, ByVal e As _
System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
Try
'フォーム上で[Enter]キーが押された時の処理
If e.KeyCode = Keys.Enter Then
'[Enter]キーで移動処理を行わないコントロールの処理
Dim blnThrough As Boolean = False
'[Shift]キーが同時に押されていたら、逆順に移動する
Dim blnForward As Boolean = e.Modifiers <> Keys.Shift
'テキストボックス(複数行入力)
If TypeOf Me.ActiveControl Is TextBox _
AndAlso CType(Me.ActiveControl, TextBox).Multiline Then blnThrough = True
'コンボボックス(リストが開いた状態の場合)
If TypeOf Me.ActiveControl Is ComboBox _
AndAlso CType(Me.ActiveControl, ComboBox).DroppedDown Then blnThrough = True
If Not blnThrough Then
'カーソルを移動する
Me.SelectNextControl(Me.ActiveControl, blnForward, True, True, True)
e.Handled = True
End If
End If
Catch ex As Exception
End Try
End Sub
(略)
End Class
※この処理を実行するときは、フォームの[KeyPreview]プロパティの値を
必ずTrueにして下さい。
Public Class frmUriage
(略)
Private Sub frmUriage_KeyDown( _
ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
End Sub
Protected Overrides Function ProcessDialogKey(ByVal keyData As System.Windows.Forms.Keys) As Boolean
'フォーム上で[Enter]キーが押された時の前処理(プリプロセス)時の処理
Dim uKeyCode As Keys = (keyData And Keys.KeyCode)
Dim uModifiers As Keys = (keyData And Keys.Modifiers)
Select Case uKeyCode
Case Keys.Enter
'[Enter]キーで移動処理を行わないコントロールの処理
Dim blnThrough As Boolean = False
'[Shift]キーが同時に押されていたら、逆順に移動する
Dim blnForward As Boolean = uModifiers <> Keys.Shift
'テキストボックス(複数行入力)
If TypeOf Me.ActiveControl Is TextBox _
AndAlso CType(Me.ActiveControl, TextBox).Multiline Then blnThrough = True
'コンボボックス(リストが開いた状態の場合)
If TypeOf Me.ActiveControl Is ComboBox _
AndAlso CType(Me.ActiveControl, ComboBox).DroppedDown Then blnThrough = True
If Not blnThrough Then
'カーソルを移動する
Me.SelectNextControl(Me.ActiveControl, blnForward, True, True, True)
Return True
End If
End Select
Return MyBase.ProcessDialogKey(keyData)
End Function
(略)
End Class
前述したプリプロセスの処理とは、フォームのProcessDialogKeyメソッドで
行われる処理です。