前提・実現したいこと
ダイアログでcsvファイルを任意の場所・名前で保存したいです。
Fnc_Aでダイアログを開き、Fnc_Bでファイルを保存。
発生している問題・エラーメッセージ
Fnc_Aで取得したファイルパスを「PATH_FILE」に代入し残しておき、後で別の処理に使用したいのですが、パラメータの定義の仕方などが今一つ理解できておりません。
ローカル変数となっている「PATH_FILE」をグローバル変数としたいのですが、
どうすればよいのでしょうか?
該当のソースコード
C#
1 2// ファイルパスの初期値 3public string PATH_FILE = ""; 4 5// 保存ダイアログ 6public void Fnc_A() 7{ 8 var sfd = new SaveFileDialog 9 { 10 FileName = "BookList.csv", 11 InitialDirectory = @"C:\", 12 Filter = "csvファイル(*.csv)|*.csv", 13 Title = "保存先のファイルを選択してください", 14 RestoreDirectory = true 15 }; 16 17 // ダイアログを表示 18 if (sfd.ShowDialog() == true) 19 { 20 // ファイルパス取得 21 var PATH_FILE = sfd.FileName; 22 23 // ファイル書き込み 24 Fnc_B(); 25 } 26} 27 28// ファイル書き込み 29public void Fnc_B() 30{ 31 // 入力値を取得 32 var w_title = ""; 33 var w_author = ""; 34 var w_publisher = ""; 35 var w_num = ""; 36 var w_input = ""; 37 38 // 書き込み用リスト作成 39 var List_W = new List_Write(w_title, w_author, w_publisher, w_num, w_input); 40 41 var w_path = PATH_FILE; 42 var w_encode = Encoding.GetEncoding("Unicode"); 43 44 FileInfo myCSVFile = new FileInfo(w_path); 45 46 using (var sw = new StreamWriter(w_path, true, w_encode)) 47 { 48 sw.WriteLine("{0},{1},{2},{3},{4}" 49 , w_title, w_author, w_publisher, w_num, w_input); 50 } 51}
試したこと
C#
1public void Fnc_A() 2{ 3 Fnc_B(PATH_FILE); 4} 5public void Fnc_B(string path_file) 6{ 7 var w_path = path_file; 8}
と引数として渡せば、Fnc_A⇒Fnc_Bはできますが、
Fnc_A⇒Fnc_B⇒Fnc_Bはできません。
(追記)
Fnc_A⇒Fnc_B ダイアログ表示選択⇒ファイル作成 (Fnc_Aを実行)では取得したパスが通りますが、
Fnc_A⇒Fnc_B⇒Fnc_B ダイアログ表示選択⇒ファイル作成の後にファイル上書きをするとき (Fnc_Aを実行後にFnc_Bを単体で実行) では取得したはずのパスが残っておらず、エラーになります。
補足情報(FW/ツールのバージョンなど)
VisualStudio2017
回答3件
あなたの回答
tips
プレビュー