今日の目標→
文字に色を付けたり、行をスクロールさせるなど、RichTextBoxを使ったテキスト表示のテクニックを探る。
●プロジェクトの作成
- 「TextWork2」という名前で、新規プロジェクトを作る
- Form1.csのコードを開き、前回(TextWork)のForm1.csのコードをコピペする
- コードを次のように修正する。
これも「開始(S)」ボタンで表示が始まり、「停止(E)」ボタンで止まる。見どころは次の3つ。
- 開始と停止メッセージに色がついている
- 文字表示が最下部に達するとスクロールする
- 行数が20行を超えると先頭行から順に消えていく
(実行画面が入る予定)
●文字に色
RichTextBoxで、文字に色を付ける方法は2つある。
(A) すでに表示されている文字の色を変えるには
- Select()メソッドで、色を変えたい文字範囲を選択
- SelectionColorプロパティで、その範囲の色を設定
(B) これから表示する文字の色を変えるには
- Select()メソッドで、テキスト末尾の「長さ0の範囲」を選択
- SelectionColorプロパティで、文字色を設定
- この状態でAppendText()メソッドを実行すると文字に色がつく
今回はAddText()の定義の中で(B)の方法を使っているので見てみてね。
●余分な行を削除
行の削除にはコツがある。というのも、RichTextBoxの操作は基本的にキャラクタ単位で行うため、行単位の操作は面倒なのだ。そこで次の2つのメソッドの出番となる。
- GetLineFromCharIndex() -- 文字の位置から行番号を得る
- GetFirstCharIndexFromLine() -- 行番号からその行の先頭の文字位置を返す
今回はCheckLines()の定義の中でこれらを使っている。
●最下行までスクロール
RichTextBoxにはScrollToCaret()メソッドというものがあって、キャレットが見える位置までウィンドウをスクロールできる。キャレットというのは、文字入力の位置でチカチカ点滅している線のことだ。文字カーソルともいう。
キャレットを移動するには、Select()メソッドで、任意の文字位置に「長さ0の範囲」を指定すればよい。
今回はScrollToEnd()の定義の中でこの方法を使っている。
以上、とても駆け足の説明でした。まあ、詳しいことはコードを読んでください。
●今日から投稿は丑三つ時に
今後の投稿ペースですが、できれば毎日1記事を目指します。 もちろん全部プログラムネタは無理っぽいので、ただの独り言の場合もあります。
投稿時刻はブログの設定で毎回午前2:00に統一しようと思います。あまりバラバラな投稿時刻だと、どんな生活リズムだと思われそうで恥ずかしいから…。
0 件のコメント:
コメントを投稿