質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

3回答

3157閲覧

VisualC#でアプリ『メモ帳』を作成し、更新したファイルを指定先へ保存したが、ファイルが見つからない

Beg

総合スコア10

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2019/05/19 14:30

【解決したいこと】
作成したメモ帳を指定したディレクトリに保存し、その場所に保存されているか確認したい。
しかし、指定したディレクトリにファイルが保存されていない。

【質問内容】
VisualC#でwindowsアプリ『メモ帳』を作成しております。

F6キーで名前をつけて保存ダイアログを出力して、指定したディレクトリにファイルを保存し、そのファイルが保存されているか確認をしようとしています。

「名前をつけて保存」ダイアログボックスの表示は、「SaveFileDioalogクラス」を使っています。

**アプリを起動し、F6キーで名前を付けてCドライブ直下に保存しましたが、ファイルは保存されていませんでした。
加えて、試しにディレクトリを変更【C:\Users\Owner\Desktop】してみましたが、保存されておりませんでした。

**

以下が作成したソースコードです。
指定した場所にファイルを置きたいのですが、以下のソースコードのどこを修正したらよいかわかりません。
ご教授頂ければ幸いです。

【参考にしたwebサイト:「dobon.net 名前を付けて保存ダイアログボックスを表示」】
URL:[https://dobon.net/vb/dotnet/form/savefiledialog.html]

Visual

1 2using System; 3using System.Collections.Generic; 4using System.ComponentModel; 5using System.Data; 6using System.Drawing; 7using System.Linq; 8using System.Text; 9using System.Threading.Tasks; 10using System.Windows.Forms; 11 12namespace FusenMemo 13{ 14 public partial class FormFusenMemo : Form 15 { 16 private int mouseX = 0; //マウスの横の位置 17 private int mouseY = 0; //マウスの縦の位置 18 19 public FormFusenMemo() 20 { 21 InitializeComponent(); 22 } 23 24 private void textFusenMemo_TextChanged(object sender, EventArgs e) 25 { 26 27 } 28 29 private void textFusenMemo_MouseDown(object sender, MouseEventArgs e) 30 { 31 //<判定>押されたボタンがマウスの左ボタン? 32 if (e.Button == MouseButtons.Left) 33 { 34 //Yesの場合 35 this.mouseX = e.X; 36 this.mouseY = e.Y; 37 } 38 } 39 40 private void textFusenMemo_KeyDown(object sender, KeyEventArgs e) 41 { 42 //<判定>押されたキーがEscキー? 43 if (e.KeyCode == Keys.Escape) 44 { 45 //Escキーである場合 46 //DialogMessaseを出力する。出力 47 DialogResult result = MessageBox.Show("アプリケーションを終了しますか?" , "メモアプリの終了", MessageBoxButtons.YesNoCancel, 48 MessageBoxIcon.Exclamation); 49 50 if (result == DialogResult.Yes) 51 { 52 this.Close(); 53 } 54 } 55 56 //F5キーでメモの保存 57 if (e.KeyCode == Keys.F6) 58 { 59 //Escキーである場合 60 //DialogMessaseを出力する。出力 61 DialogResult result = MessageBox.Show("保存しますか?", "メモアプリの終了", MessageBoxButtons.YesNoCancel, 62 MessageBoxIcon.Exclamation); 63 64 if (result == DialogResult.Yes) 65 { 66 //SaveFileDiologクラスのインスタンスを作成:「名前を付けて保存」ボックスを表示する。 67 SaveFileDialog sfd = new SaveFileDialog(); 68 //はじめのファイル名を指定する。 69 //はじめに「ファイル名」で表示される文字列を指定する 70 sfd.FileName = "新しいファイル.html"; 71 //はじめに表示されるフォルダを指定する 72 sfd.InitialDirectory = @"C:\"; 73 //[ファイルの種類]に表示される選択肢を指定する 74 //指定しない(空の文字列)の時は、現在のディレクトリが表示される 75 sfd.Filter = "HTMLファイル(*.html;*.htm)|*.html;*.htm|すべてのファイル(*.*)|*.*"; 76 //[ファイルの種類]ではじめに選択されるものを指定する 77 //2番目の「すべてのファイル」が選択されているようにする 78 sfd.FilterIndex = 2; 79 //タイトルを設定する 80 sfd.Title = "保存先のファイルを選択してください"; 81 //ダイアログボックスを閉じる前に現在のディレクトリを復元するようにする 82 sfd.RestoreDirectory = true; 83 //既に存在するファイル名を指定したとき警告する 84 //デフォルトでTrueなので指定する必要はない 85 sfd.OverwritePrompt = true; 86 //存在しないパスが指定されたとき警告を表示する 87 //デフォルトでTrueなので指定する必要はない 88 sfd.CheckPathExists = true; 89 90 //ダイアログを表示する 91 if (sfd.ShowDialog() == DialogResult.OK) 92 { 93 //OKボタンがクリックされたとき、選択されたファイル名を表示する 94 Console.WriteLine(sfd.FileName); 95 } 96 } 97 } 98 } 99 100 private void textFusenMemo_MouseDoubleClick(object sender, MouseEventArgs e) 101 { 102 //色を設定する。 103 colorDialogFusen.ShowDialog(); 104 //テキストボックスの背景色を選んだ色に変更する。 105 textFusenMemo.BackColor = colorDialogFusen.Color; 106 } 107 108 private void textFusenMemo_MouseMove(object sender, MouseEventArgs e) 109 { 110 //<判定>押されたボタンがマウスの左ボタン? 111 if (e.Button == MouseButtons.Left) 112 { 113 //Yesの場合 114 this.Left += e.X - mouseX; 115 this.Top += e.Y - mouseY; 116 } 117 } 118 } 119} 120

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

papinianus

2019/05/28 15:57

textFusenMemoは何というパーツですか?
Beg

2019/05/29 10:46

papinianusさん ご回答ありがとうございます。textFusenMemoは、「TextBoxコントロール」です。
papinianus

2019/05/29 22:41

テキストボックスの場合の保存例は回答を書きました
Beg

2019/05/30 09:37

papinianusさん ご回答ありがとうございました。確認させていただきました。
guest

回答3

0

ベストアンサー

ファイル保存ダイアログを表示するだけで、ファイルの保存処理が書かれていませんね。
Console.WriteLine(sfd.FileName)の後あたりに File.WriteAllText か何か入れましょう。

File.WriteAllText Method

投稿2019/05/19 18:07

alg

総合スコア2019

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Beg

2019/05/24 17:21

ご回答ありがとうございます。現在、検討中です。
Zuishin

2019/05/24 23:23

「まだ回答を求めています」「検討中」の意味がわかりません。alg さんと gentaro さんの回答がズバリ答えです。わかりにくければ何がわかっていないのかを具体的に質問する方が良いのではないでしょうか。
Zuishin

2019/05/24 23:28

「ファイル保存ダイアログ」は「保存する場所をユーザーに聞くため」のダイアログで、場所を聞く以外のことは何一つしません。聞くだけ聞いて保存するコードが書かれていないので保存されないというだけの話です。 File.WriteAllText Method へのリンクが貼られていますが、これを使えば保存できますよという意味です。
Beg

2019/05/29 10:07

Zuishinさん ご回答ありがとうございます。確かにわからなければ、その際にお聞きすればよかったと反省しております。頂いた回答を元に自分なりに調べたのですが、当時は分からないままでした。実は、今も検討している段階です(調べる時間が無くて・・・)。ですので、もう少し考える必要があるようです。 行動に失礼があったこと、お詫び申し上げます。
guest

0

csharp

1 //ダイアログを表示する 2 if (sfd.ShowDialog() == DialogResult.OK) 3 { 4 //OKボタンがクリックされたとき、選択されたファイル名を表示する 5 Console.WriteLine(sfd.FileName); 6 System.IO.File.WriteAllText(sfd.FileName, textFusenMemo.Text); 7 }

投稿2019/05/28 16:18

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

SaveFileDialogは「ファイルを保存する」ときにフォルダやファイル名を指定する画面を共通化するための部品であって、実際のファイルの保存処理は別途書く必要があります。

保存対象がテキストなのかバイナリなのか、テキストであってもエンコーディングは何か、バイナリならそれこそ世の中に無数に存在する形式にどうやって対応するのか、を考えると、保存までは面倒見きれないですよね。

投稿2019/05/20 12:09

gentaro

総合スコア8949

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Beg

2019/05/24 17:21

ご回答ありがとうございます。確かにそうですね。もう一度検討してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問