ステータスバーにコンボボックスとトラックバーを組み込む
次に、ステータスバーにズーム機能を組み込むためのコンボボックスとトラックバーを組み込みます。ステータスバーは、C1Ribbonコンポーネントの下層に位置するC1StatusBarクラスを使ってデザインや処理を実装します。
C1StatusBarオブジェクトは、「LeftPain」と「RightPain」という2つのペインに分かれており、それぞれ下表にあるコントロールを組み込んで使うことができます。
- ボタン
- ラベル
- メニュー
- 区切り記号
- トグルグループ
- トグルボタン
- プログレスバー
- チェックボックス
- トラックバー
- コンボボックス
今回は、右側のペインに、コンボボックスとトラックバーを組み込み、RichTextBoxコントロールのズーム機能を使えるようにします。
トラックバーとコンボボックスを組み込む
ステータスバーにコントロールを組み込むには、フォームデザイン時は専用のエディタを使用します。
1.
フォームのステータスバーの部分をクリックし、プロパティウィンドウのオブジェクト名が「c1StatusBar1」になっているのを確認し、「RightPainItems」プロパティをクリックします。
2.
「c1StatusBar右ぺインアイテムコレクションエディタ」が表示されるので、「追加」ボタンの横の▼をクリックしてリストから「RibbonCombobox」を選びます。そして、次のプロパティを設定します。
プロパティ | 設定値 |
Label | Zoom |
Text | 100 |
TextAreaWidth | 30 |
3.
同じように、「追加」ボタンの横の▼をクリックしてリストから「RibbonTrackBar」を選びます。
そして、コレクションエディタのプロパティリストにある次のプロパティを設定します。これらは、TrackBarの動作範囲を設定するプロパティです。
プロパティ | 設定値 |
LargeChange | 10 |
Maximum | 500 |
Minimum | 10 |
SmallChange | 5 |
Value | 100 |
4.
コレクションエディタを閉じ、プロパティウィンドウの「RightPaneWidth」を200にします。これで、ステータスバーにコンボボックスとトラックバーが表示されます。
コンボボックスのリストとズーム機能の処理の作成
コンボボックスとトラックバーにズーム機能を実装します。
1.
フォームのLoadイベントハンドラで、コンボボックスのリストを追加する処理を作成します。リストは、最小値を10にし、後は50から50ずつ増えるようにします。
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
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プロパティに代入しておきます。
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
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プロパティに設定して、連動させておきます。
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
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コンポーネントを使ってみてください。