プログラミングのメモ

プログラミングの学び直し備忘録

C#:Winフォーム:リッチテキストボックス

参考

コントロールで矢印、Tab、Enter、Escキーが押されたことを知る - .NET Tips (VB.NET,C#...)"

改行(WordWrap )

        //
        // 概要:
        //     複数行テキスト ボックス コントロールで必要に応じて自動的に次の行に折り返すかどうかを示します。
        //
        // 戻り値:
        //     複数行テキスト ボックス コントロールで行が折り返される場合は true。ユーザーがコントロールの右端を超えてテキストを入力すると、複数行テキスト ボックス
        //     コントロールが自動的に水平にスクロールする場合は false。既定値は、true です。
        [DefaultValue(true)]
        [Localizable(true)]
        [SRCategoryAttribute("CatBehavior")]
        [SRDescriptionAttribute("TextBoxWordWrapDescr")]
        public bool WordWrap { get; set; }

キャレット位置

テキストボックスの文字の入力位置(キャレット)を取得・設定する [C#] TextBox | JOHOBASE"

テキストボックスのキャレットを文字列の末尾に移動させるには?@IT"

[C#] テキストボックスのキャレットの位置を変更する (TextBoxのキャレット移動)"

TextBox(またはRichTextBox)の現在のカレット位置(行と列)を取得する - .NET Tips (VB.NET,C#...)"

  RichTextBox.SelectionStart

        // 複数行対応
        private void rtxt_KeyUp(object sender, KeyEventArgs e)
        {
            RichTextBox rtxt = (RichTextBox)sender;

            //文字列
            string str = rtxt.Text;

            //カレットの位置を取得
            int selectPos = rtxt.SelectionStart;

            //カレットの位置までの行を数える
            int row = 1, startPos = 0;
            for (int endPos = 0;
                (endPos = str.IndexOf('\n', startPos)) < selectPos && endPos > -1;
                row++)
            {
                startPos = endPos + 1;
            }

            //列の計算
            int col = selectPos - startPos + 1;

            //結果を表示
            Console.WriteLine("行:{0} 列:{1}", row, col);
        }