概要
前回の記事では、WPF(Windows Presentation Foundation)を使用してテキストボックスに入力された内容をテキストファイルとして保存する例について解説しました。今回は、保存先を指定できるようにコードを拡張します。
コード例
画面デザイン(XAML)
XAMLファイルで以下のようにUIを作成します。前回のコードと同じです。
<Window x:Class="WpfSaveTextExample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Save Text Example" Height="250" Width="400">
<Grid>
<StackPanel Margin="20">
<TextBox x:Name="textBox" MinHeight="100" MinWidth="200" TextWrapping="Wrap" AcceptsReturn="True" />
<Button x:Name="btnSave" Content="保存" Click="btnSave_Click" />
</StackPanel>
</Grid>
</Window>ぷ
コードビハインド
次に、コードビハインド(MainWindow.xaml.cs)で以下のようにボタンのクリックイベントを処理します。
using System;
using System.IO;
using System.Windows;
namespace WpfSaveTextExample
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void btnSave_Click(object sender, RoutedEventArgs e)
{
try
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*";
// ファイル保存ダイアログの表示
if (saveFileDialog.ShowDialog() == true)
{
// テキストボックスの内容を取得
File.WriteAllText(saveFileDialog.FileName, textBox.Text);
MessageBox.Show("File saved successfully.");
}
string text = textBox.Text;
// ファイルに保存
File.WriteAllText("saved_text.txt", text);
MessageBox.Show("テキストを保存しました");
}
catch (Exception ex)
{
MessageBox.Show("エラーが発生しました:" + ex.Message);
}
}
}
}
解説
SaveFileDialogを使用して、ファイル保存ダイアログを表示します。
Filterプロパティを使用して、保存可能なファイルの種類を指定します。ここではテキストファイル(*.txt)とすべてのファイルを指定できるようにしています。
ShowDialogメソッドを使用して、ユーザーがファイルを保存する場所を選択するまで待機します。選択されたファイル名は、FileNameプロパティから取得できます。選択されたファイル名とテキストボックスの内容をFile.WriteAllTextメソッドを使用してファイルに書き込みます。最後に、保存が成功したことを示すメッセージボックスを表示します。
まとめ
この記事では、WPFアプリケーションでファイル保存ダイアログを表示し、テキストボックスの内容をファイルに保存する方法を紹介しました。ボタンのクリックイベントを処理するメソッド内で、SaveFileDialogを使用してファイル保存ダイアログを表示し、選択されたファイル名とテキストボックスの内容をFile.WriteAllTextメソッドを使用してファイルに書き込みました。
このコード例を参考にして、自分のWPFアプリケーションにファイル保存機能を追加することができます。また、ファイルの保存先や保存するファイルの種類をカスタマイズするために、SaveFileDialogのプロパティやメソッドを調べてみると良いでしょう。



コメント