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

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

案内メニュー