SHOEISHA iD

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

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

ComponentZine(ComponentOne)

.NETアプリのリボンインターフェースにUndo・Redo・ズーム機能を組み込む

PowerTools Ribbon for .NETのC1Ribbonコンポーネントを使ってアプリケーションにリボンを実装する-その2

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

ステータスバーにコンボボックスとトラックバーを組み込む

 次に、ステータスバーにズーム機能を組み込むためのコンボボックスとトラックバーを組み込みます。ステータスバーは、C1Ribbonコンポーネントの下層に位置するC1StatusBarクラスを使ってデザインや処理を実装します。

 C1StatusBarオブジェクトは、「LeftPain」と「RightPain」という2つのペインに分かれており、それぞれ下表にあるコントロールを組み込んで使うことができます。

  • ボタン
  • ラベル
  • メニュー
  • 区切り記号
  • トグルグループ
  • トグルボタン
  • プログレスバー
  • チェックボックス
  • トラックバー
  • コンボボックス

 今回は、右側のペインに、コンボボックスとトラックバーを組み込み、RichTextBoxコントロールのズーム機能を使えるようにします。

右側のペインにコンボボックスとトラックバーを組み込む
右側のペインにコンボボックスとトラックバーを組み込む

トラックバーとコンボボックスを組み込む

 ステータスバーにコントロールを組み込むには、フォームデザイン時は専用のエディタを使用します。

1.

 フォームのステータスバーの部分をクリックし、プロパティウィンドウのオブジェクト名が「c1StatusBar1」になっているのを確認し、「RightPainItems」プロパティをクリックします。

2.

 「c1StatusBar右ぺインアイテムコレクションエディタ」が表示されるので、「追加」ボタンの横の▼をクリックしてリストから「RibbonCombobox」を選びます。そして、次のプロパティを設定します。

プロパティ 設定値
Label Zoom
Text 100
TextAreaWidth 30
リストから「RibbonTrackBar」を選ぶ
リストから「RibbonTrackBar」を選ぶ
3.

 同じように、「追加」ボタンの横の▼をクリックしてリストから「RibbonTrackBar」を選びます。

 そして、コレクションエディタのプロパティリストにある次のプロパティを設定します。これらは、TrackBarの動作範囲を設定するプロパティです。

プロパティ 設定値
LargeChange 10
Maximum 500
Minimum 10
SmallChange 5
Value 100
動作範囲のプロパティを設定する
動作範囲のプロパティを設定する
4.

 コレクションエディタを閉じ、プロパティウィンドウの「RightPaneWidth」を200にします。これで、ステータスバーにコンボボックスとトラックバーが表示されます。

コンボボックスのリストとズーム機能の処理の作成

 コンボボックスとトラックバーにズーム機能を実装します。

1.

 フォームのLoadイベントハンドラで、コンボボックスのリストを追加する処理を作成します。リストは、最小値を10にし、後は50から50ずつ増えるようにします。

Visual Basic
Private Sub RibbonForm1_Load(ByVal sender As System.Object, _
                  ByVal e As System.EventArgs) Handles MyBase.Load
    Dim i As Integer

    Me.RibbonComboBox1.Items.Add(10)
    For i = 50 To 500 Step 50
        Me.RibbonComboBox1.Items.Add(i)
    Next
    Me.RibbonComboBox1.Text = Me.RibbonTrackBar1.Value.ToString
End Sub
C#
private void RibbonForm1_Load(object sender, EventArgs e)
{
    int i ;

    ribbonComboBox1.Items.Add("10");
    for(i=50;i<=500;i+=50){
       ribbonComboBox1.Items.Add(System.Convert.ToString(i));
    }

    ribbonComboBox1.Text = System.Convert.ToString(ribbonTrackBar1.Value);
}
2.

 次に、RibbonTrackBarがクリックされた時の処理を作成します。これは、C1StatusBarオブジェクトのClickイベントハンドラを使用します。

 まず、RibbonTrackBarのValueプロパティから現在の設定値を取り出し、倍率(%)に換算して変数に格納します。

 そして、この値をRichTextBoxのZoomFactorプロパティに設定します。このZoomFactorプロパティは、RichTextBoxの画面の表示倍率を設定するプロパティで、1/64から64.0までの範囲の値をSingle型で設定すると、画面の表示をその倍率で行います。

 また、RibbonTrackBarのValueプロパティの値を文字列に変換し、RibbonComboBoxのTextプロパティに代入しておきます。

Visual Basic
Private Sub C1StatusBar1_Click(ByVal sender As System.Object, _
              ByVal e As System.EventArgs) Handles C1StatusBar1.Click
    Dim zoomsize As Single = Me.RibbonTrackBar1.Value / 100

    Me.RichTextBox1.ZoomFactor = zoomsize

    Me.RibbonComboBox1.Text = Me.RibbonTrackBar1.Value.ToString
End Sub
C#
private void c1StatusBar1_Click(object sender, EventArgs e)
{
    Single zoomsize = System.Convert.ToSingle(ribbonTrackBar1.Value)/100;

    richTextBox1.ZoomFactor = zoomsize;
    ribbonComboBox1.Text
      = System.Convert.ToString(ribbonTrackBar1.Value);
}
3.

 今度は、RibbonComboBoxのリストが選択された場合の処理です。これは、RibbonComboBoxのSelectedIndexChangedイベントハンドラで処理します。

 といっても、選択されたリスト項目からズーム倍率を算出し、RichTextBoxのZoomFactorプロパティに設定するだけです。

 設定したら、その値をRibbonTrackBarのValueプロパティに設定して、連動させておきます。

Visual Basic
Private Sub RibbonComboBox1_SelectedIndexChanged(_
  ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles RibbonComboBox1.Selecte Dim zoomsize As Single = _
      CInt(Me.RibbonComboBox1.SelectedItem.Text)
    Me.RichTextBox1.ZoomFactor = zoomsize / 100
    Me.RibbonTrackBar1.Value = zoomsize
End Sub
C#
private void ribbonComboBox1_SelectedIndexChanged(object sender, 
                                                  EventArgs e)
{
    Single zoomsize
      = System.Convert.ToSingle(ribbonComboBox1.SelectedItem.Text);
    richTextBox1.ZoomFactor = zoomsize / 100;
    ribbonTrackBar1.Value = System.Convert.ToInt32(zoomsize);
}

まとめ

 MicrosoftがOffice 2007で導入した新しいGUIのリボンは、Windows VistaのGUIと合わせてこれまでにない外観をプログラムに実装できます。

 この新しいGUIをプログラムに実装したいと思っている方は、ぜひPowerTools Ribbon for .NETのC1Ribbonコンポーネントを使ってみてください。

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

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

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

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

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

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2153 2008/08/20 14:06

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング