質問: VB.NET 2008を使用して勉強をしているのですが、 最善の作り方ががわからず悩んでいます。 フォーム上にテキストボックスがいくつか規則的に並べてあるとします。 テキストボックスについての動作は以下を想定しています。 1. 文字列を表示する 2. マウスでクリックしたら選択していることがわかるように枠線で囲まれているように表示 3. 別のテキストボックスを選択したら、先ほどまで選択していたテキストボックスの枠線は消え、 現在選択しているテキストボックスを枠線で囲む 4. 文字列は状況によっては一部の文字のサイズや色を変えたい 全体的な動きのイメージとしてはエクセルのような動作を実現するという感じだと思います。 文字列の一部のサイズや色を変えるなら テキストボックスではなくリッチテキストボックスを使用しないといけないのかと考えておりますが・・・。 何か実現するよい方法はありますでしょうか。
回答: 方法1 **TextBoxを継承** * WndProcをoverride * CreateGraphicsにてGraphicsを作成(Dim g = CreateGraphics()) * 枠の表示はg.DrawRectangleで行う * 文字の表示はg.DrawStringで行う(色やフォントの単位でこのメソッドにて作成する必要あり) * その際の文字の開始位置はg.MeasureStringで文字の表示サイズを取得できるのでWidthプロパティで判断する 方法2 **ラッピングする(ユーザコントロール)** * ユーザコントロールを作成 * RichTextBoxを配置 * 描画にて枠を描画 * フォントはRichTextBoxの機能を利用する すぐに思いつくのは上記2パターン。