フォームの作成その1
では、順番にフォームを作成していきます。
フォームの設定
フォームは、各操作を行うGcFlowLayoutContainerコントロール、RichTextBoxコントロール、カラーピッカーの3つのエリアに分けて作成します。
カラーピッカーのエリアは[文字色の設定]ボタンを押すと広がり、OKボタンを押すと縮小するように、フォームのHeightプロパティを操作します。したがって、フォームはユーザーがサイズ変更できないように設定しておきます。また、LoadイベントハンドラでHeightプロパティを440に設定しておきます。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Height = 440 End Sub
private void Form1_Load(object sender, EventArgs e) { this.Height = 440; }
GcFlowLayoutContainerコントロールの配置
フォームの上部にGcFlowLayoutContainerコントロールを配置します。このコントロールは、Visual Studio標準のフローレイアウトパネルコントロールの機能に、子コントロールへのラベルの追加と立体表示機能を追加したコントロールで、GradientEffectプロパティによる背景のグラデーションと、PatternEffectプロパティによる模様も設定できます。
今回はコントロールを横一列に配置するのに使用します。DockプロパティをTopに設定し、フォームの上部に固定します。
GcFontPickerとNumericUpDownコントロールの配置
ここには、最初にGcFontPickerとNumericUpDownコントロールを配置します。GcFontPickerコントロールはフォントの選択に、NumericUpDownコントロールはフォントサイズを選択するのに使用します。
GcFontPickerコントロールはフォント入力専用のコントロールで、Microsoft Office 2007のツールバーにあるフォントピッカーと同様の機能を提供します。このコントロールは、使用するコンピュータに組み込まれているフォントを自動的に取得してリスト表示するとともに、お気に入りのフォントや最近使用したフォントの設定、またはフォントに説明を付けることができます。さらに、文字の種類によって一覧に表示するフォントを絞り込むことも可能です。

ユーザーがリストからフォントを選択する、あるいはエディット部分に入力すると、コントロールにはSelectedFontChangedイベントが発生します。そこで、このイベントハンドラで選択したフォントをRichTextBoxコントロールの入力文字列に適用する処理を作成します。
ユーザーがリストからフォントを選択する、あるいはエディット部分に入力したフォントを取得するには、SelectedFontInfoプロパティを使用します。このプロパティは、フォント関連情報をカプセル化するFontInfoオブジェクトを返してきます。そこで、このオブジェクトをRichTextBoxコントロールで選択されている文字列に適用します。
RichTextBoxコントロールに新しいフォントを適用するには、まずRichTextBoxクラスのSelectionFontプロパティを使用します。このとき、フォーム起動時のフォントサイズも一緒に適用しないと実行時エラーが発生するので、ToFontメソッドで9ポイントを設定しておきます。このToFontメソッドは、現在のFontInfoと指定したサイズを使用して、新しいFontオブジェクトを作成します。これを、RichTextBoxコントロールのSelectionFontプロパティに代入します。
また、NumericUpDownコントロールはフォントサイズを設定します。動作範囲は1から100までとし、初期値でValueプロパティに9をセットしておきます。
Public fsize As Single = 9 Private Sub GcFontPicker1_SelectedFontChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GcFontPicker1.SelectedFontChanged RichTextBox1.SelectionFont = GcFontPicker1.SelectedFontInfo.ToFont(fsize) End Sub
Single fsize = 9; private void gcFontPicker1_SelectedFontChanged(object sender, EventArgs e) { richTextBox1.SelectionFont = gcFontPicker1.SelectedFontInfo.ToFont(fsize); }
ユーザーがNumericUpDownコントロールをクリックするとValueChangedイベントが発生するので、このイベントハンドラで新しいFontオブジェクトをRichTextBoxコントロールの選択文字列に設定します。設定方法は、GcFontPickerコントロールと同じです。
Private Sub NumericUpDown1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NumericUpDown1.ValueChanged fsize = NumericUpDown1.Value RichTextBox1.SelectionFont = GcFontPicker1.SelectedFontInfo.ToFont(fsize) End Sub
private void numericUpDown1_ValueChanged(object sender, EventArgs e) { fsize = (Single)numericUpDown1.Value; richTextBox1.SelectionFont = gcFontPicker1.SelectedFontInfo.ToFont(fsize); }
GcButtonとGcColorPickerコントロールの配置
今度は、RichTextBoxコントロールで選択した文字列の文字色を変える処理を作成します。これには、GcColorPickerコントロールを使用します。このコントロールは色を選択するコントロールで、カラーパレットおよび表示色からの選択と、エディタへの直接入力の3種類の色選択機能を提供します。
ドロップダウンボタンを押すとWindowsのアプリケーションでおなじみのカラーパレットが表示され、テーマや最近使用した色、もしくは利用可能な表示色から1色を選ぶことができます。エディタ部分には、RGB値やWebでの色の名称を直接入力できます。
ピッカーボタンを押すと、実行中の自分自身のフォームだけでなく他のアプリケーションも含め、デスクトップ上に表示されているすべての色から1色をピックアップできます。ピックされた色は、エディタ部分にRGB値とその色が表示されます。GcColorPickerコントロールで選択した色情報は、ColorオブジェクトとしてSelectedColorプロパティに格納されます。

このプログラムでは、GcColorPickerとPictureBox、GcButtonコントロールをフォーム下部に配置しています。フォームのサイズを小さくして通常は隠し、フォーム上部の「文字色の設定」ボタンを押すとフォームを下方に広げ、表示されるようにしました。
GcColorPickerコントロールの横には、グラフィックスアプリケーションで作成したグラデーションの画像をPictureBoxコントロールで表示し、ピッカーで色を選べるようにしています。
また、GcColorPickerコントロールの下に配置した[OK]ボタンを押すと、このSelectedColorプロパティの値をRichTextBoxコントロールのSelectionColorプロパティに代入して、選択した文字列の文字色を変更します。フォームのHeightプロパティを440に設定して、GcColorPickerコントロールなどを隠すようにしています。なお、[OK]ボタンと[文字色の設定]ボタンは、ボタンのGradientEffectプロパティを使用して、ボタン表面の色をグラデーションにしています。
Private Sub GcButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GcButton1.Click Me.Height = 580 End Sub Private Sub GcButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GcButton3.Click RichTextBox1.SelectionColor = GcColorPicker1.SelectedColor Me.Height = 440 End Sub
private void gcButton1_Click(object sender, EventArgs e) { this.Height = 580; } private void gcButton3_Click(object sender, EventArgs e) { this.richTextBox1.SelectionColor = gcColorPicker1.SelectedColor; this.Height = 440; }