38章:WPFテキスト ファイルからデータを読み取るの作成

    作成2013.04.26

     ここでは、Windowsフォームアプリケーション用サンプルコードをWPFアプリケーション用コードに変換します。フォームアプリケーションからWPFアプリケーションへの変化が最近の主流のようです。

  1. 参照元情報
     テキスト ファイルからデータを読み取るは(Visual Basic ガイド ツアー)
    「テキスト ファイルからデータを読み取る」にジャンプする
    「WPF - Windows フォーム用のコントロールを使う」にジャンプする
     作成方法の詳細は上記を参照願います。


  2. フォームアプリケーションからWPFアプリケーションへの変更
     若干の変更でフォームアプリケーションからWPFアプリケーションへの変更ができます。

     完成ファイルは以下からダウンロードできます。
     ダウンロード後は解凍してから使用してください。
      [ WPFテキスト ファイルからデータを読み取る]をダウンロードする。
     解凍すると「38WpfFileTest」フォルダーがあります。
    注(1)「38WpfFileTest」フォルダーの「WpfFileTest.sln」ファイルをダブルクリックすると「Express 2012 for Windows Desktop」が起動します。
    注(2)メニューの「ウインド」_「ウインドレイアウトのリセット」で標準に戻ります。
    注(3)「ソリューションエクスプローラ」ウインドウ内のMainWindow.xaml」をダブルクリックすると「デザイン」が表示されます。
    注(4)メニューの「表示」_「コード」を選択するとコードが表示されます。
    注(5)「WpfFileTest.sln」の動作確認は「デバッグ」_「デバッグ開始」で実行します。デバッグ機能を用いて動作確認を行います。


  3. WpfFileTest.slnの実行
    (1)「Microsoft Visual Basic 2010 Express」のデバッグ機能を使用します。
    (2)「デバッグ」_「デバッグ開始」を選択します。
    (3)操作画面が表示されます。
    (4)Test実行ボタンを押します。
    (5)オープン・ファイル・ダイアログが表示されます。
    (6)テキストファイルを選択してOKボタンをおします。
    (7)選択ファイルの2行分のテキスト内容がメッセージボックスにされます。OKボタンを押します。
    (8)保存ファイル・ダイアログが表示されます。
    (9)保存場所とファイル名を指定して、保存ボタンを押します。
    (10)クローズボックスでプログラムを終了します。
    (11)保存ファイルにコピーが作成されます。


  4. プロジェクトの構成
    (1)UserControl1の構成
    ・OpenFileDialog1とSaveFileDialog1を配置します。

    (2)XAMLコードの構成
    ・UserControl1を配置します。
    ・Buttonを配置します。

    注(1)OpenFileDialog1とSaveFileDialog1がフォームアプリケーション用のツールとなります。
    注(2)OpenFileDialog、SaveFileDialogの「Filterを(*.txt)|*.txt」に設定します。


  5. MainWindow.xamlの全コード
    <Window x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" 
        xmlns:self="clr-namespace:WpfFileTest"
        Title="MainWindow" Height="220" Width="282">
        <Grid>
            <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="23,11,0,0" Name="Button1" VerticalAlignment="Top" Width="75" />
            <WindowsFormsHost Visibility="Hidden">
                <self:UserControl1 x:Name="myControl"/>
            </WindowsFormsHost> 
        </Grid>
    </Window>
    


  6. XAMLのポイント
    (1)<Window>階層1:クラス:以下の記載が特別です。
     xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
     上記の記載はUserControlを使用するための記載です。
      xmlns:self="clr-namespace:WpfFileTest"
     上記の記載はWpfFileTestソリューションを使用するための記載です。
    (2) <WindowsFormsHost x:Name="wfHost" Grid.Row="0">
    <self:UserControl1 x:Name="myControl" />
    </WindowsFormsHost>
     上記の記載でUserControl1の使用条件を設定します。名前は"myControl" となります。
    (3)Grid機能を使用してButtonを配置します。


  7. MainWindow.xaml.csの全コード
    using System;
    using System.Windows;
    using System.Windows.Forms;
    using System.IO;
    
    namespace WpfFileTest
    {
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }
    
            private void Button1_Click(object sender, RoutedEventArgs e)
            {
                if (myControl.OpenFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    using (StreamReader sr = new StreamReader(myControl.OpenFileDialog1.FileName))
                    {
                        String FirstLine = sr.ReadLine();
                        String AllLine = FirstLine + "\r\n" + sr.ReadToEnd();
    
                        System.Windows.Forms.MessageBox.Show(FirstLine, "TEST", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
    
                        if (myControl.SaveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                        {
                            using (StreamWriter outfile = new StreamWriter(myControl.SaveFileDialog1.FileName))
                            {
                                outfile.Write(AllLine);
                            }
                        }
                    }
                }
            }
        }
    }
    


  8. コードの解説
    (1)myControl.OpenFileDialog1.ShowDialog()でファイル名を取得します。
    (2)myControl.SaveFileDialog1.ShowDialog()で保存場所とファイル名を設定します。


  9. Public Class UserControl1クラスのコード
     Public Class UserControl1クラスのコードはありません。


    感想:
    (1)C#においては、コードの記述はWPFにおいては、厳密になる傾向がみられます。
    (2)コードの種類が増大するに従い、曖昧な記述が許されないのかもしれません。







39章:WPFタブ区切りのテキスト ファイルを読み取るの作成に行く。

トップページに戻る。