Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

複数機能を表示するタブページを持ったWPFアプリケーションの作成

ComponentOne Studio Enterprise 2011JのC1TabControlコントロールを使ったWPFアプリケーションの作成

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2011/10/17 14:00
目次

テキスト表示用C1TabControlコントロールの設定

 今度は、テキスト表示用C1TabControlコントロールの設定を行います。

 右側に配置したC1TabControlコントロールですが、デザイン時点ではタブページは追加しません。ここでは、コントロールの右端に[閉じる]ボタンとドロップダウンリストを表示するボタンの設定のみ行います。

 コントロールの右端に[閉じる]ボタンを設定するには、「TabItemClose」プロパティの値を「GlobalClose」に設定します。これで、「閉じる」ボタンは個々のタブページには付かず、C1TabControlコントロールに1つだけ付きます。

 また、タブページのリストを表示するドロップダウンリストボタンを使うには、「TabStripMenuVisibility」プロパティを「Visible」に設定します。

<c1:C1TabControl Height="358" HorizontalAlignment="Left" Name="c1TabControl1" VerticalAlignment="Top" 
                 Width="535" TabItemClose="GlobalClose" TabStripMenuVisibility="Visible" 
                 TabStripPlacement="Top" Margin="204,30,0,0">
</c1:C1TabControl>

 後は、すべてコードからタブページとTextBoxコントロールを追加していきます。

テキストファイルを読み込む処理

 ここからは、コードでテキストファイルを読み込み、タブページとTextBoxコントロールを作成してファイルの中身を表示する処理を組み立てます。この処理は、ButtonコントロールのClickイベントハンドラで行います。

「ファイルを開く」ダイアログボックスの表示

 まず、「ファイルを開く」ダイアログボックスを表示し、読み込むテキストファイル名を取得します。

 ここで、WindowsフォームでもおなじみのWin32APIのOpenFileDialogクラスを使用します。コンストラクタでオブジェクト化し、ShowDialogメソッドを実行すると、「ファイルを開く」ダイアログボックスが表示されます。ユーザーがファイルを選ぶと、OpenFileDialogクラスのFileNameプロパティに、選択したファイル名をドライブ名からのフルパスで格納します。また、SafeFileNameプロパティにはファイル名のみを格納するため、それぞれの値を変数に格納しておきます。

Visual Basic
Imports C1.WPF
Imports System.IO
Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
    ' ファイルの読み込み
    Dim fname As String = ""
    Dim shortfname As String = ""

    Dim dlg As New Microsoft.Win32.OpenFileDialog()
    dlg.FileName = "*.txt" ' Default file name
    dlg.DefaultExt = ".txt" ' Default file extension
    dlg.Filter = "テキストファイル (.txt)|*.txt" ' Filter files by extension

    ' ダイアログの表示
    Dim result? As Boolean = dlg.ShowDialog()
    If result = True Then
        ' Open document
        fname = dlg.FileName
        shortfname = dlg.SafeFileName
C#
using System.IO;
using C1.WPF;

private void button1_Click(object sender, RoutedEventArgs e)
{
    // ファイルの読み込み
    string fname = "";
    string shortfname = "";

    Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
    dlg.FileName = "*.txt"; // Default file name
    dlg.DefaultExt = ".txt"; // Default file extension
    dlg.Filter = "テキストファイル (.txt)|*.txt"; // Filter files by extension

    // ダイアログの表示
    Nullable<bool> result = dlg.ShowDialog();
    if (result == true)
    {
        fname = dlg.FileName;
        shortfname = dlg.SafeFileName;

タブページとTextBoxコントロールの追加処理

 ユーザーが選択したファイル名を取得したら、タブページ「TabItem」オブジェクトを作成し、C1TabControlコントロールに追加するとともに、Headerプロパティに開いたファイル名を設定します。

 また、TextBoxコントロールを作成し、TabItemオブジェクトのContentプロパティに設定します。これで、タブページにTextBoxコントロールが組み込まれます。このとき、TextBoxコントロールでは文字列の折り返しを設定し、垂直方向のスクロールバーを設定しておきます。

 そして、FileクラスのReadAllTextメソッドでファイルの中身をすべて取り出し、TextBoxコントロールのTextプロパティに設定して表示します。

Visual Basic
        ' タブページとTextBoxの追加
        'タブを作成し、コンテンツを追加します
        Dim TabItem As New C1TabItem()
        c1TabControl1.Items.Add(TabItem)
        TabItem.Header = shortfname

        Dim tbox1 As TextBox = New TextBox()
        tbox1.TextWrapping = TextWrapping.WrapWithOverflow
        tbox1.VerticalScrollBarVisibility = ScrollBarVisibility.Auto

        TabItem.Content = tbox1
        tbox1.Text = File.ReadAllText(fname, Text.Encoding.Default)
    End If
End Sub
C#
        
        // タブページとTextBoxの追加
        C1TabItem tabitem = new C1TabItem();
        c1TabControl1.Items.Add(tabitem);
        tabitem.Header = shortfname;

        TextBox tbox1 = new TextBox();
        tbox1.TextWrapping = TextWrapping.WrapWithOverflow;
        tbox1.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
            
        tabitem.Content = tbox1;
        tbox1.Text = File.ReadAllText(fname, Encoding.Default);
     }
}

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

著者プロフィール

  • 瀬戸 遥(セト ハルカ)

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

バックナンバー

連載:ComponentZine(ComponentOne Studio)

もっと読む

All contents copyright © 2005-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5