SHOEISHA iD

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

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

ComponentZine(ComponentOne)

カスタムツールバーを実装したワープロ風WPFアプリケーションの作成

ComponentOne Studioを活用したWindowsフォームアプリケーションの作成

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

GUIの作成

 では、さっそくアプリケーションを作成していきましょう。

 今回作成するアプリケーションは、前回作成したアプリケーションにC1Toolbarコントロールを追加し、1つのグループ「ファイル」と2つのボタン「保存」「開く」を配置します。

 ウィンドウ内に3つのコントロールを配置するため、スタックパネルではなく2行2列のグリッドを用いてコントロールをレイアウトします。

フォームのレイアウト
フォームのレイアウト

ツールバーの作成

 今組み込んであるリッチテキストボックスツールバーの横にC1Toolbarコントロールを追加し、ファイル操作用のツールバーを作成します。

 そのために、C1RichTextBoxToolbarコントロールとC1RichTextBoxコントロールをスタックパネルでレイアウトしているのを、2行2列のグリッドを使ったレイアウトに変更します。

 ① グリッドは、RowDefinition・ColumnDefinition要素をそれぞれ2つずつ作成し、1行目1列目にC1Toolbarコントロールを、1行目2列目にC1RichTextBoxToolbarコントロールを、2行目1列目にC1RichTextBoxコントロールをレイアウトするように、XAMLを書き換えます。

 なお、今回はウィンドウのリサイズ処理は使わないようにしますので、グリッドのサイズは1行目だけ指定し、リッチテキストボックスのサイズ指定も削除します。

修正前
<Grid>
    <StackPanel Height="465" HorizontalAlignment="Left" Name="StackPanel1" VerticalAlignment="Top" Width="665">
        <c1:C1RichTextBoxToolbar Name="c1RichTextBoxToolbar1" RichTextBox="{Binding ElementName= c1RichTextBox1}"/>
        <c1:C1RichTextBox Name="c1RichTextBox1" Height="343" Width="665"  />
    </StackPanel>
</Grid>
修正後
<Grid Name="Grid1" HorizontalAlignment="Left" >
    <Grid.RowDefinitions >
        <RowDefinition Height="125"/>
        <RowDefinition />   
    </Grid.RowDefinitions>
        
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="133*" />
        <ColumnDefinition  />
    </Grid.ColumnDefinitions>
        
    <c1:C1RichTextBoxToolbar Grid.Column="1"  Name="C1RichTextBoxToolbar1" 
                                 RichTextBox="{Binding ElementName= C1RichTextBox1}" />
        <c1:C1RichTextBox Name="C1RichTextBox1" Grid.ColumnSpan="2" Grid.Row="1" />    </Grid>
グリッドの位置とコントロールの位置関係
グリッドの位置とコントロールの位置関係

 ② ツールボックスから、C1Toolbarコントロールをグリッドにドラッグ&ドロップし、グリッドの枠内に収まるようにします。

C1Toolbarコントロールをグリッドにドラッグ&ドロップ
C1Toolbarコントロールをグリッドにドラッグ&ドロップ

 ③ XAML画面を表示し、グループ「ファイル」を作成します。

<c1:C1Toolbar Height="125" HorizontalAlignment="Left" Name="c1Toolbar1" VerticalAlignment="Top" Width="131">
    <c1:C1ToolbarGroup Header="ファイル" Width="130" Height="120" >
    </c1:C1ToolbarGroup>
</c1:C1Toolbar>
ツールバー内にグループ「ファイル」が作成される
ツールバー内にグループ「ファイル」が作成される

 ④ ツールボックスから、C1ToolbarButtonコントロールを2つ、グループ内にドラッグ&ドロップし、Nameプロパティを「Button1」「Button2」に変更します。

グループ内にボタンが2つ作成される
グループ内にボタンが2つ作成される

 ⑤ プロジェクトにフォルダ「images」を作成し、アイコン画像を2つ追加する。

アイコン画像を2つプロジェクトに追加
アイコン画像を2つプロジェクトに追加

 ⑥ ボタンのLargeImageSource、SmallImageSource、LabelTitleプロパティを使用して、テキストと画像を組み込みます。

 また、Contentsプロパティの値を削除し、Button1のみMarginプロパティを設定します。これで、2つのボタンにテキストと画像が表示されます。

 なお、LargeImageSource、SmallImageSourceプロパティに設定する画像のパス名は「/image」から始まるように修正しておきます。

 また、実行ファイルを直接起動する場合は、実行ファイルのあるフォルダ内にこのimagesフォルダをコピーしておいてください。

<c1:C1ToolbarGroup Header="ファイル" Width="130" Height="120">
    <c1:C1ToolbarButton LabelTitle="開く" Width="50" LargeImageSource="/images/openfolderHS.png" 
    					Margin="0,10,0,0" Name="Button1"  />
    <c1:C1ToolbarButton LabelTitle="保存" Width="50" SmallImageSource="/images/saveHS.png" 
                        Name="Button2"  />
</c1:C1ToolbarGroup>
出来上がったボタン
出来上がったボタン

 ⑦ 2つのボタンのClickイベントハンドラを作成します。

 ⑧ 最後に、C1RichTextBoxコントロールのHorizontalScrollBarVisibilityプロパティを"Auto"にします。これで、リッチテキストボックス内のコンテンツがリッチテキストボックスの高さを超えると、自動的に垂直スクロールバーが表示されます。

次のページ
ファイルの保存・読み出し処理

修正履歴

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

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

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

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

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

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7519 2013/11/28 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング