WPF のサンプルコード テキストファイルの読込と保存

C#+WPF (Windows Presentation Foundation) のサンプルコード。
テキストファイルの読込と保存を行うアプリケーションを作成。

Windows 7+Visual Studio 2013 Express Edition のパソコン環境において動作確認。

新しいプロジェクトの作成

  • テンプレート: Visual C# - Windows - WPF アプリケーション
  • 名前: WpfAppSample
  • ソリューション名: WpfAppSample

MainWindow.xaml

<Window x:Name="mainWindow" x:Class="WpfAppSample.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="WpfAppSample">
    <Window.CommandBindings>
        <CommandBinding 
            Command="ApplicationCommands.Open" 
            Executed="OpenCommand_Executed" />
        <CommandBinding 
            Command="ApplicationCommands.SaveAs" 
            Executed="SaveAsCommand_Executed" />
        <CommandBinding 
            Command="ApplicationCommands.Close" 
            Executed="CloseCommand_Executed" />
    </Window.CommandBindings>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition />
        </Grid.RowDefinitions>

        <Menu x:Name="mainMenu" Grid.Column="0" Grid.Row="0">
            <MenuItem x:Name="fileMenuItem" Header="ファイル(_F)">
                <MenuItem x:Name="openMenuItem" Header="開く(_O)" 
                    Command="ApplicationCommands.Open" />
                <MenuItem x:Name="saveAsMenuItem" Header="名前を付けて保存(_A)" 
                    Command="ApplicationCommands.SaveAs" />
                <Separator />
                <MenuItem x:Name="exitMenuItem" Header="終了(_X)" 
                    Command="ApplicationCommands.Close"
                    InputGestureText="Alt+F4" />
            </MenuItem>
        </Menu>
        <TextBox x:Name="textBox" Grid.Column="0" Grid.Row="1"
            AcceptsReturn="True" 
            VerticalScrollBarVisibility="Auto" />
    </Grid>
</Window>

TextBox で複数行表示を行うには、以下のように設定する:

  • 改行を許可するために、TextBox 要素に AcceptsReturn 属性を追加、その値を True に設定。
  • 縦スクロールバーを表示するために、TextBox 要素に VerticalScrollBarVisibility 属性を追加、その値を Auto に設定。

MainWindow.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

// 以下を追加
using System.IO;
using Microsoft.Win32;  // OpenFileDialog, SaveFileDialog

namespace WpfAppSample
{
    /// <summary>
    /// MainWindow.xaml の相互作用ロジック
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        // メニュー - 開く
        private void OpenCommand_Executed(
            object sender, ExecutedRoutedEventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();

            dialog.DefaultExt = ".txt";
            dialog.Filter = 
                "テキストファイル (*.txt)|*.txt|" + 
                "すべてのファイル (*.*)|*.*";

            Nullable<bool> result = dialog.ShowDialog();
            if (result == true)
            {
                textBox.Text = File.ReadAllText(
                    dialog.FileName, Encoding.Default);
            }
        }

        // メニュー - 保存
        private void SaveAsCommand_Executed(
            object sender, ExecutedRoutedEventArgs e)
        {
            SaveFileDialog dialog = new SaveFileDialog();

            dialog.DefaultExt = ".txt";
            dialog.Filter = "テキストファイル (*.txt)|*.txt";

            Nullable<bool> result = dialog.ShowDialog();
            if (result == true)
            {
                File.WriteAllText(dialog.FileName, 
                    textBox.Text, Encoding.Default);
            }
        }

        // メニュー - 終了
        private void CloseCommand_Executed(
            object sender, ExecutedRoutedEventArgs e)
        {
            this.Close();
        }
    }
}

【theme : プログラミング
【genre : コンピュータ

プロフィール

よしいず

Author:よしいず
MATHEMATICS.PDFというウェブサイトを運営しています。アマゾンにて電子書籍を販売しています。

管理の都合上、トラックバックとコメントはオフにしてあります。ブログ経験者なら分かっていただけると思いますが、スパム(アダルトやその他の宣伝)ばかりなのが現実です。

リンクは自由です。当サイトの記事に対する間違いの指摘・意見・感想などを述べた記事からのリンクは歓迎です。ただし、ブログ記事アップ直後はミスが多く、頻繁に修正します。場合によっては削除する可能性もあります。その際、何も断りもなく修正・削除しますがご了承ください。内容を参考にする場合には投稿後一週間ほど様子を見てからにしてください(笑)。

記事の間違いを指摘するときは、その具体的箇所、理由(仕様に反するなど)・根拠(参考にした文献など)、代替案(同じ結果を得るための正しいやり方)も教えてください。そうしないと、(指摘される側および第三者はその時点では無知の状態なので、)どこが間違いなのか分かりませんし、本当に間違っているのかどうかが判断・検証できません。実際、間違いだと指摘されたことが結局は正しかったというケースもありますので。

このブログのタイトル一覧

リンク
月別アーカイブ
カテゴリ
最新記事
検索フォーム
RSSリンクの表示