SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(PlusPak)

一味違うコントロールを使った.NETアプリケーションを作る

PlusPak for Windows Forms 6.0Jを使ったエディタアプリケーションの作成(1)

  • このエントリーをはてなブックマークに追加

フォームの作成その2

GcDropDownButtonコントロールの配置

 カット、コピー、ペーストの編集操作を行うためのメニューを組み込みますが、フォームのメニューではなくGcDropDownButtonコントロールを使用します。このコントロールは、ボタンを押すとコンテキストメニューをドロップダウン表示するとてもユニークなコントロールです。メニューはフォームの上部に固定されてしまいますが、GcDropDownButtonコントロールはフォームの好きな場所に配置して、そこからメニュー表示させることができるので、フォームのデザインが自由に行えるメリットがあります。

 また、ドロップダウンの方向やコンテキストメニュー以外にコンボボックスやテキストボックスをドロップダウン表示させることができます。コントロールを配置した後に、タスクトレイから「ドロップダウン項目」を選ぶとコレクションエディタが表示されるので、ここでドロップダウン項目を設定します。

タスクトレイから「ドロップダウン項目」を選ぶと
タスクトレイから「ドロップダウン項目」を選ぶと
コレクションエディタが表示される
コレクションエディタが表示される

 コレクションに「MenuItem」を選ぶと、フォームに自動的に「ContextMenuStrip」コントロールが配置されるので、このコントロールで直接編集することもできます。

ContextMenuStripコントロールで直接編集することもできる
ContextMenuStripコントロールで直接編集することもできる

 ユーザーがメニューを選ぶと、各ToolStripMenuItemオブジェクトにはClickイベントが発生するので、イベントハンドラにメニューが選択された時の処理を作成します。ここでは、RichTextBoxクラスのCopy、Cut、Pasteメソッドを実行するようにしています。

Visual Basic
Private Sub ToolStripMenuCut_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuCut.Click
    RichTextBox1.Cut()
End Sub

Private Sub ToolStripMenuCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuCopy.Click
    RichTextBox1.Copy()
End Sub

Private Sub ToolStripMenuPaste_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuPaste.Click
    RichTextBox1.Paste()
End Sub
C#
private void toolStripMenuCopy_Click(object sender, EventArgs e)
{
    richTextBox1.Copy();
}

private void toolStripMenuCut_Click(object sender, EventArgs e)
{
    richTextBox1.Cut();
}

private void toolStripMenuPaste_Click(object sender, EventArgs e)
{
    richTextBox1.Paste();
}

GcCheckedGroupBoxコントロールの配置

 フォントのスタイルを設定するためのチェックボックスを配置します。これは、太字・斜体・下線の3つのスタイルを適用させるためで、GcCheckedGroupBoxコントロールを使用します。

 このコントロールは、複数のCheckBoxコントロールを1つのグループボックス内で管理するコントロールで、CheckBoxとGroupBoxコントロールが1つになったようなコントロールです。

 グループボックスにはキャプションを設定でき、展開・折りたたみの[+]ボタンやチェックボックスを付けることができます。グループボックスに設定したチェックボックスを使うと、グループ内のCheckBoxすべてを一括して有効・無効の設定が行えたり、すべてのチェックボックスのチェックを一括してON/OFFできるようになります。グループボックス内のチェックボックスの配列も、テーブルレイアウト、フローレイアウト、絶対位置レイアウトから選べ、チェックボックス間のパディングや上下左右の間隔も自由に設定できます。

 GcCheckedGroupBoxコントロール内のチェックボックスがユーザーによってクリックされると、GcCheckedGroupBoxコントロールにはItemCheckedChangedイベントが発生します。また、個々のCheckBoxコントロールは、GcCheckedGroupBoxクラスのItemsプロパティで識別でき、チェックされたかどうかはCheckedプロパティの値を調べることで分かります。TrueでチェックON、FalseでチェックOFFです。

 このプログラムでは、太字・斜体・下線それぞれが単独でチェックされた場合と組み合わせてチェックされた場合の処理を作成しています。処理としては、RichTextBoxコントロールのSelectionFontプロパティで、選択状態にある文字列のFontオブジェクトを参照します。選択されているフォント名とサイズはそのままで、FontStyle構造体のメンバを組み合わせ、設定したFontクラスのコンストラクタでFontオブジェクトを作成し、SelectionFontプロパティに設定するようにしています。コンストラクタの引数に指定するFontStyle構造体のメンバ(Bold、Italic、Underline)は、Visual Basicでは「+」演算子で、C#では「|」(OR)演算子を使うことで、複数のスタイルを適用させることができます。

Visual Basic(抜粋)
Private Sub GcCheckedGroupBox1_ItemCheckedChanged(ByVal sender As System.Object, ByVal e As GrapeCity.Win.Containers.CheckBoxItemEventArgs) Handles GcCheckedGroupBox1.ItemCheckedChanged
Dim oldfont As FontFamily = RichTextBox1.Font.FontFamily
Dim fontsize As Single = Convert.ToSingle(NumericUpDown1.Value)

'太字
If GcCheckedGroupBox1.Items(0).Checked = True Then
    RichTextBox1.SelectionFont = New Font(oldfont, fontsize, FontStyle.Bold, GraphicsUnit.Point)
End If

'太字、斜体、下線
If GcCheckedGroupBox1.Items(0).Checked = True And _
    GcCheckedGroupBox1.Items(1).Checked = True And _
    GcCheckedGroupBox1.Items(2).Checked = True Then
    RichTextBox1.SelectionFont = New Font(oldfont, fontsize, FontStyle.Bold + FontStyle.Italic + FontStyle.Underline, GraphicsUnit.Point)
End If
End Sub
C#(抜粋)
private void gcCheckedGroupBox1_ItemCheckedChanged(object sender, GrapeCity.Win.Containers.CheckBoxItemEventArgs e)
{
    FontFamily oldfont = this.richTextBox1.Font.FontFamily;
    Single fontsize = (Single)numericUpDown1.Value;

    //斜体
    if( gcCheckedGroupBox1.Items[1].Checked == true )
    {
        richTextBox1.SelectionFont = new Font(oldfont, fontsize, FontStyle.Italic, GraphicsUnit.Point);
    }           

    //斜体、下線
    if(gcCheckedGroupBox1.Items[1].Checked == true && gcCheckedGroupBox1.Items[2].Checked == true )
    {
        richTextBox1.SelectionFont = new Font(oldfont, fontsize, FontStyle.Italic | FontStyle.Underline, GraphicsUnit.Point);
    }

     //太字、斜体、下線すべてなし
    if (gcCheckedGroupBox1.Items[0].Checked == false && gcCheckedGroupBox1.Items[1].Checked == false &&
        gcCheckedGroupBox1.Items[2].Checked == false)
    {
        richTextBox1.SelectionFont = new Font(oldfont, fontsize, FontStyle.Regular, GraphicsUnit.Point);
    }
}

まとめ

 PlusPak for Windows Forms 6.0Jのコントロールは、どれもユニークなものばかりで、しかもかゆい所に手が届くような機能を備えたものばかりです。しかも、グラデーションによる塗りつぶしや3D表示などとても視覚効果の高いフォームをデザインすることができ、複合的な機能を備えたコントロールのおかげでフォームの限られたスペースを有効に使えることができます。

 コントロール自体にあらかじめ多くの機能が組み込まれているので、プロパティの設定と簡単なコードだけですぐに使える点も、開発コストが少なくて済むという観点では大きな魅力です。使い勝手の良い、見栄えのするアプリケーションを開発したいとお考えであれば、PlusPak for Windows Forms 6.0Jの導入は高いメリットをもたらすことでしょう。

製品情報

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
ComponentZine(PlusPak)連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4637 2009/12/08 19:49

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング