「Avalonia UI - ダイアログ」の版間の差分

ナビゲーションに移動 検索に移動
164行目: 164行目:
     // 選択されたファイルを処理
     // 選択されたファイルを処理
     // ...略
     // ...略
}
</syntaxhighlight>
<br><br>
== ファイル保存タイアログ ==
==== OpenFileDialogのプロパティ ====
<br>
==== Filtersプロパティ (ファイルの種類) の設定 ====
<br>
==== 使用例 ====
以下の例では、Avalonia UIを使用してファイル保存ダイアログを実装している。<br>
<br>
<syntaxhighlight lang="c#">
using Avalonia;
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using System;
using System.IO;
using System.Threading.Tasks;
namespace AvaloniaFileSaveDialog
{
    public partial class MainWindow : Window
    {
      public MainWindow()
      {
          InitializeComponent();
      }
      private void InitializeComponent()
      {
          AvaloniaXamlLoader.Load(this);
      }
      // 保存ボタンを押下
      public async void OnSaveButtonClicked(object sender, RoutedEventArgs e)
      {
          try
          {
            string content = "これはファイルの内容です";  // 保存する内容
            string savedFilePath = await ShowSaveFileDialogAsync();
            if (!string.IsNullOrEmpty(savedFilePath))
            {
                await SaveFileAsync(savedFilePath, content);
                Console.WriteLine("成功", $"ファイルを正常に保存: {savedFilePath}");
            }
          }
          catch (Exception ex)
          {
            Console.WriteLine("エラー", $"ファイルの保存中にエラーが発生: {ex.Message}");
          }
      }
      // ファイル保存ダイアログを表示して、選択されたファイルパスを返す
      private async Task<string> ShowSaveFileDialogAsync()
      {
          var saveFileDialog = new SaveFileDialog();
          // ダイアログのタイトル
          saveFileDialog.Title = "ファイルを保存";
          // .txtファイルのフィルタを追加
          saveFileDialog.Filters.Add(new FileDialogFilter { Name = "テキストファイル", Extensions = { "txt" } });
          string result = await saveFileDialog.ShowAsync(this);
          return result;
      }
      // 指定されたパスにファイルを非同期で保存
      private async Task SaveFileAsync(string filePath, string content)
      {
          await File.WriteAllTextAsync(filePath, content);
      }
    }
  }
  }
  </syntaxhighlight>
  </syntaxhighlight>

案内メニュー