前提・実現したいこと
開発環境 Visual Studio 2019
WPF .NetFramework 4.7.2
C#でユーザー任意の文字列を保存するために「Settings.settings」に「Indent」という名前のString変数を設定しています。(Properties.Settings.Defaultでアクセスできる変数です)
アプリの機能としてこの「Indent」という変数をユーザーがテキストボックスなどで任意に変更し、保存することができます。
問題となるのはここからで、アプリ起動時に「Indent」を読みだすと「\r\n 」という文字列に意図せず置き換わってしまっています。
下のソースでは「Indent」を「IndentChar」に代入して使っています。
該当のソースコード
アプリ起動時の読み出しとコンソール出力
C#
1 public class MainWindowModel : BindableBase 2 { 3 public MainWindowModel() 4 { 5 // ここで読みだされる 6 IndentChar = Properties.Settings.Default.Indent; 7 Console.WriteLine(Environment.NewLine + "Indent の中身:Start"); 8 Console.WriteLine("「" + IndentChar + "」"); 9 Console.WriteLine("Indent の中身:End" + Environment.NewLine); 10 11 CurrentFontFamily.Value = new FontFamily(Properties.Settings.Default.FontName); 12 CurrentFontSize.Value = Properties.Settings.Default.FontSize; 13 CurrentFontWeight.Value = FontWeight.FromOpenTypeWeight(Properties.Settings.Default.FontWeight); 14 CurrentHeaderLength = Properties.Settings.Default.HeaderLength; 15 TitleText.Value = nameof(Torimemo_i2); 16 IndentCharCount = Properties.Settings.Default.IndentCharCount; 17 } 18 }
ユーザーによる設定値の変更(設定値が変更されるコードはここのみ)
C#
1 /// <summary> 2 /// タブ文字の変更 3 /// </summary> 4 private void TextBoxTextChanged_IndentChar(string text) 5 { 6 // ここでユーザー任意の文字列が代入される 7 Console.WriteLine(text); 8 Properties.Settings.Default.Indent = text; 9 MainWindowViewModel.IndentChar = text; 10 }
アプリ終了時に保存
C#
1 /// <summary> 2 /// 終了処理 3 /// </summary> 4 private void ConfigWindow_Closing() 5 { 6 // アプリを閉じると保存 7 Properties.Settings.Default.Save(); 8 }
試したこと
- Settings.settingsを新たに作り直す
- Visual Studioの再起動・ソリューション、アプリのリビルド
補足情報(FW/ツールのバージョンなど)
補足ですが、アプリを起動して「Indent」の値を変更して保存すると、アプリを起動中の間はちゃんと代入された値を使用できます。また「Indent」の他にも「文字フォント(FontFamily)」などの設定値はあるのですが、そちらは問題なく保存され、アプリを再起動しても意図した値を読み取ることができます。
聞いても……な気はするのですが、このような現象に心当たりのある方がいれば意見をお聞きしたいです。
回答1件
あなたの回答
tips
プレビュー