coltonOP
@coltonOP (こるとんくん)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

C# saveFileDialogで保存されない

解決したいこと

VisualStudio2022 で saveFileDialogを使ったテストコードを書いていたのですが、
ファイル名を書いて保存ボタンを押してもファイルが生成されません
原因を調べようとしても出てこないので質問しました。

namespace test0203
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        
        private void button_Click(object sender, EventArgs e)
        {
            DialogResult dr = saveFileDialog1.ShowDialog();
            if(dr == DialogResult.OK)
            {
                textBox2.Text = saveFileDialog1.FileName;
            }
        }
    }
}

テキストボックスに自分が入力したファイル名を含んだファイルパスがテキストボックスに表示されるのですが、
肝心のファイルが作られていないです。

どうしたらよいでしょうか?

0

2Answer

SaveFileDialogは、ユーザーからファイル名を入力させてそれを受け取るだけのものなので、実際のファイル出力処理は、自分で書く必要があります。

if( saveFileDialog1.ShowDialog() == DialogResult.OK )
{
    System.IO.File.WriteAllText(saveFileDialog1.FileName, "あいうえお");
}
1Like

Comments

  1. @coltonOP

    Questioner

    そうなのですね、この機能だけでファイルを作ってくれるのかと思っていました。
    この機能を使った参考文献のほとんどが、これを書いていなかったので勘違いしていました。 ありがとうございました。

肝心のファイルが作られていないです。

作りたいファイルが何か不明ですが、質問のコードの

textBox2.Text = saveFileDialog1.FileName;

のところに、ファイルを作成して saveFileDialog1.FileName で指定されるパスに書き込むコードを書いてください。

作りたいファイルがテキストファイルであれば「c# テキストファイル 書き込み」などをキーワードにググってみてください。参考になる記事が多々見つかるはずです。例えば下記:

ファイルにテキストを書き込むには?[C#/VB、.NET全バージョン]
https://atmarkit.itmedia.co.jp/ait/articles/0711/08/news119.html

1Like

Comments

  1. @coltonOP

    Questioner

    回答ありがとうございます。自分でファイルを作成する記述をしなくてはいけないということは、上書きする形になるときは、またその動作を記述しなくてはいけないという認識であっていますでしょうか?
  2. 紹介した記事に「コンストラクタの第1パラメーターにはファイルのパス名を指定し、第2パラメーターにはtrueかfalseを指定する。trueの場合、既存のテキスト内容が全て残されたまま、その末尾にテキスト内容が追記される。falseの場合、いったん既存の内容が完全に削除されてから、新たにテキスト内容が書き込まれる。」と書いてあるのを読みましたか?
  3. @coltonOP

    Questioner

    つまり、trueかfalseによって上書きか追記か変わるってことでよいのでしょうか?
  4. 誤解の余地がないくらいはっきり書いてあるのに何でそんなことをいちいち聞いてくるの? 疑問に思ったら自分でコードを書いて検証してみればいい。
  5. @coltonOP

    Questioner

    すいません、質問したかったのでしました。

Your answer might help someone💌