リッチテキストコントロールにちょっと興味が出て、少し試してみたところかんたんに簡易ワープロが作れそうだったので作ってみました。というか、既にリッチテキストコントロールはほとんどワープロの機能を備えてしまっているので、それをちょいちょいとコールするだけって感じです。
まずは、画面にリッチテキストコントロールを配置します。
その前に、書式の変更をツールバーでやりたいので、ToolStripConteinerを配置して画面にドッキングし、その中にリッチテキストコントロールを配置します。
そしたら、ToolStripを先ほど配置したToolStripContainer上に配置してやります。
たったこれだけで、ウィンドウに連動してサイズが可変する画面が作れるっていうのはとっても便利ですねぇ。以前なら、Formのリサイズの際に発生するイベントでゴリゴリ書いたものですが。。
で、最初は箇条書きの制御を行ってみます。
ToolStripにボタンを追加してボタンクリックイベントに以下のようなコードを書いてみました。
{
richTextBox1.SelectionBullet = true;
}
else
{
richTextBox1.SelectionBullet = false;
}
要するに、選んだ場所が箇条書きかどうか調べて、箇条書きでない場合には箇条書きに、箇条書きの場合には箇条書きを解除します。
ちなみに、書いた後に思いつきましたが、下で書式制御に使っている排他的論理和を使用して記述するとこういう風にも書けそうですね。
richTextBox1.SelectionBullet = richTextBox1.SelectionBullet ^ true;
さくっと箇条書きが設定できました。
今度は、選択した場所の書式を変更するボタンを作ってみます。
やっぱりToolStripにボタンを追加して以下のようなコードを書いてみます。
this.richTextBox1.SelectionFont = fo;
上記は、選択している場所のフォントで、選択している場所のフォントスタイルとイタリックのスタイルで排他的論理和をとった書式を設定したフォントオブジェクトを生成して、選択している場所のフォントを変更するっていうコマンドです。
排他的論理和とは、要するに1と1の場合には0、1と0の場合には1を返すことができる論理演算です。
ここでの場合、イタリックでない場合にはイタリックに、もともとイタリックの場合にはイタリックではないスタイルになってくれます。
まったく同じ考え方でボールド、取り消し線、下線も設定できます。
ついでですから、読み込みと保存も実装してみます。
上記の要領でToolStripにボタンを追加して、openfileDialogを画面に配置してから、以下のコードを書いてやります。
{
richTextBox1.LoadFile(openFileDialog1.FileName, RichTextBoxStreamType.RichText);
}
ちなみに、Saveは以下でできちゃいます。
{
richTextBox1.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.RichText);
}
うーん、ちょっと感動するくらいかんたんです。
これで、以前サンプルを作ったツリーの生成とデータベースへの読み書きを組み合わせると、階層構造文書管理ツールが作れるような気がしてきます。
以前やっていたVBと比べるとイベントの生成とかちょっとめんどくさいところもありますが、それを補えるほどコントロール類の機能向上が図られているようです。まだプログラマだった頃これがあったら、結構楽出来たろうなぁと思いつつ、今のプログラマさんはこれが当たり前なので要求されるレベルも上がっているのかなぁとか思ったりします。
んー、でも自分がやってるプロジェクトってWebアプリがほとんどなんであんまり恩恵にあずかってないのかな。
コメント