- PR -

複数行入力可能フィールドにてALT+ENTERで改行したい。

1
投稿者投稿内容
maurois
会議室デビュー日: 2004/03/06
投稿数: 13
投稿日時: 2004-03-17 00:38
複数行入力可能フィールドにてALT+ENTERで改行し、ENTERで次のフォーカス移動先にフォーカスを移動したいのですが、以下のようにしても上手くいきません。

ALT+ENTERで、入力されている文字列の途中で改行することは可能でしょうか。

ご教授よろしくお願いします。


Private Sub Txt複数行可能領域_KeyDown(ByVal sender As Object, ByVal KeyEventArgs As System.Windows.Forms.KeyEventArgs) Handles Txt複数行可能領域.KeyDown

If KeyEventArgs.KeyValue = System.Windows.Forms.Keys.Return Then
If KeyEventArgs.Alt = True Then
Txt複数行可能領域.Text = Txt複数行可能領域.Text + vbCrLf
Else
Me.Txt次のフォーカス移動先.Focus()
End If
End If

End Sub
ant
常連さん
会議室デビュー日: 2004/03/24
投稿数: 44
投稿日時: 2004-03-26 00:08
まず、
If KeyEventArgs.KeyValue = System.Windows.Forms.Keys.Return
については
If e.KeyValue = System.Windows.Forms.Keys.Return
の間違いでいいんですよね?又、その下のKeyEventArgs.Altについても同様ですが…。
そのつもりで話を進めます。
テキストボックスにおいて文字列の途中に文字列を挿入するには
SelectedTextプロパティを使用します。
つまり、下記のようなコードになります。
コード:
    Private Sub Txt複数行可能領域_KeyDown(ByVal sender As Object, 
    ByVal e As System.Windows.Forms.KeyEventArgs) Handles Txt複数行可能領域.KeyDown
        If e.KeyValue = System.Windows.Forms.Keys.Return Then
            If e.Alt = True Then
                Txt複数行可能領域.SelectedText = vbCrLf
            Else
                Me.Txt次のフォーカス移動先.Focus()
            End If
        End If
    End Sub


ただし、このままでは、文字列の途中でEnterキーを押すと改行されてから、
フォーカスが移ってしまいます。従って、Enterを検出したら
KeyPressイベントハンドラ内でKeyPressEventArgsのHandled
プロパティをTrueに設定してやる必要があります。
1

スキルアップ/キャリアアップ(JOB@IT)