トップ回答者
Rich TextBoxに複数行入力する場合につて

質問
回答
-
santarou さん、こんにちは
ダッチです。
RichTextBox.Multiline プロパティを False にすれば単一行で入力できるようになります。
たぶん複数行の入力ができるのに Enter で改行しない方法を探しておられると思うのですが、もしそうだとしたら、どうやって改行するのでしょうか?
santarou さんからの引用 ひとつの文書としてずっと入力したいためです。 この部分が理解できませんでした。
-
そういうことですか。理解できました。
KeyDown イベントの引数である KeyEventArgs クラスを利用すれば Enter 時に改行をしないようにする事ができます。
KeyEventArgs クラスに Handled プロパティというものが存在します。これに True を設定するとコントロールの既定の処理を省略することができます。既定の処理とは Enter キーで改行したり、カーソルキーでキャレットを移動したりする処理のことです。
今回は改行のみ制御したいとのことですので、Enter キーが入力された時だけ Handled プロパティを True にすればいいと思います。コードにすると次のようになります。
Code SnippetPrivate Sub RichTextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles RichTextBox1.KeyDown
If e.KeyCode = Keys.Enter Then
e.Handled = True
End If
End Sub一つ心配なことがあるのですが、Enter キーで改行を制御しても「貼り付け」操作をした場合に改行が含まれる可能性があります。その場合は大丈夫でしょうか?
-
仕組みを入れるとなると RichTextBox を継承して WndProc メソッドをオーバーライドする必要がありますね。
回答してくださっている じゃんぬねっと さんのサイトに「数字または一部の文字しか入力できないようにする」というページがあります。これを参考にすれば「貼り付け」操作をした場合に、改行を取り除くことが出来そうです。
すべての返信
-
santarou さん、こんにちは
ダッチです。
RichTextBox.Multiline プロパティを False にすれば単一行で入力できるようになります。
たぶん複数行の入力ができるのに Enter で改行しない方法を探しておられると思うのですが、もしそうだとしたら、どうやって改行するのでしょうか?
santarou さんからの引用 ひとつの文書としてずっと入力したいためです。 この部分が理解できませんでした。
-
そういうことですか。理解できました。
KeyDown イベントの引数である KeyEventArgs クラスを利用すれば Enter 時に改行をしないようにする事ができます。
KeyEventArgs クラスに Handled プロパティというものが存在します。これに True を設定するとコントロールの既定の処理を省略することができます。既定の処理とは Enter キーで改行したり、カーソルキーでキャレットを移動したりする処理のことです。
今回は改行のみ制御したいとのことですので、Enter キーが入力された時だけ Handled プロパティを True にすればいいと思います。コードにすると次のようになります。
Code SnippetPrivate Sub RichTextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles RichTextBox1.KeyDown
If e.KeyCode = Keys.Enter Then
e.Handled = True
End If
End Sub一つ心配なことがあるのですが、Enter キーで改行を制御しても「貼り付け」操作をした場合に改行が含まれる可能性があります。その場合は大丈夫でしょうか?
-
仕組みを入れるとなると RichTextBox を継承して WndProc メソッドをオーバーライドする必要がありますね。
回答してくださっている じゃんぬねっと さんのサイトに「数字または一部の文字しか入力できないようにする」というページがあります。これを参考にすれば「貼り付け」操作をした場合に、改行を取り除くことが出来そうです。
-