- 題名: RichTextBoxで入力文字が途中で自動で折り返す
- 日時: 2014/02/12 14:43:16
- ID: 32152
- この記事の返信元:
- (なし)
- この記事への返信:
- [32155] Re[1]: RichTextBoxで入力文字が途中で自動で折り返す2014/02/12 18:19:36
- ツリーを表示
■No32152に返信(みけんにしわさんの記事)
> 実行して文字を入力すると勝手に折り返して表示する事があります。
全角の数字部分が原因かと思います。いわゆる『禁則処理』ですね。
> 枠の最後で折り返す方法が判らず投稿させて頂きました。
EM_SETWORDBREAKPROC を SendMessage すれば解除できます。
Imports System.Runtime.InteropServices
Public Class Form1
Private Const EM_SETWORDBREAKPROC As Integer = &HD0
Private Const WB_ISDELIMITER As Integer = 2
' http://msdn.microsoft.com/ja-jp/library/cc410811.aspx
Delegate Function EditWordBreakProc(lpch As IntPtr, ichCurrent As Integer, cch As Integer, code As Integer) As Integer
<DllImport("user32")> _
Shared Function SendMessage(hWnd As IntPtr, msgId As Integer, wParam As IntPtr, lParam As EditWordBreakProc) As IntPtr
End Function
Private callback As EditWordBreakProc
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
callback = Function(lpch, ichCurrent, cch, code) If(code = WB_ISDELIMITER, 0, ichCurrent)
SendMessage(RichTextBox1.Handle, EM_SETWORDBREAKPROC, IntPtr.Zero, callback)
End Sub
End Class
上記は手抜きなので、ダブルクリックでの単語選択や、
[Ctrl]+[→] での単語単位の移動などには対応できていません。
必要に応じて、コールバック関数を書き換えてみてください。
分類:[.NET]
RichTextBoxに文字をMultiline=true,WordWrap=trueで複数行表示される設定にしているのですが、実行して文字を入力すると勝手に折り返して表示する事があります。
枠の最後で折り返す方法が判らず投稿させて頂きました。
よろしくお願いします。
入力枠イメージ
--------------------------------------------------
|A123456789A123456789A |
|123456789A123456789A |
|123456789A123456789A |
--------------------------------------------------
↑勝手に折り返して表示される
改行コードは入っていません
以下のパターンはきれいに表示される。
--------------------------------------------------
|ABCDEFGHIJKLMNOPQRSTUVWX|
|YZABCDEFGHIJKLMNOPQRSTUV|
|WXYZABCDEFGHIJKLMNOPQRST|
--------------------------------------------------