settingクラスでコンボボックスのデータをOKボタンが押されたら保存し、そのデータをformクラスに表示したいです。
また、アプリ起動時にも前回保存されたデータをformクラスに表示したいです。
ユーザー設定を保存する機能は、すでに用意されています。
アプリケーション設定とユーザー設定の使用 - Windows Forms .NET Framework | Microsoft Learn
c# properties.settings - Google 検索
アプリ単位で設定を持つので、複数フォームから容易にアクセスできます。
Visual Studioにデザイナも用意されているので編集も簡単です。
cs:Form1.cs
1 using System . Configuration ;
2 using System . Diagnostics ;
3
4 namespace Q5v7v77os02rppz ;
5
6 public partial class Form1 : Form
7 {
8 public Form1 ( )
9 {
10 InitializeComponent ( ) ;
11
12 // バインドすればこれだけ
13 label1 . DataBindings . Add ( new Binding ( "Text" , Properties . Settings . Default , "comboBox1Value" ) ) ;
14
15 // バインドしない場合は起動時に反映
16 //label1.Text = Properties.Settings.Default.comboBox1Value;
17 }
18
19 private void Button1_Click ( object sender , EventArgs e )
20 {
21 if ( new Setting ( ) . ShowDialog ( ) == DialogResult . OK )
22 {
23 // バインドしない場合は変更時にも反映
24 //label1.Text = Properties.Settings.Default.comboBox1Value;
25 }
26 }
27
28 private void Button2_Click ( object sender , EventArgs e )
29 {
30 // ユーザー設定の保存場所
31 var userSettingFilePath = ConfigurationManager . OpenExeConfiguration ( ConfigurationUserLevel . PerUserRoamingAndLocal ) . FilePath ;
32
33 if ( File . Exists ( userSettingFilePath ) )
34 {
35 Process . Start ( new ProcessStartInfo
36 {
37 FileName = "notepad" ,
38 Arguments = userSettingFilePath ,
39 UseShellExecute = true ,
40 } ) ;
41 }
42 }
43
44 private void Form1_FormClosed ( object sender , FormClosedEventArgs e )
45 {
46 // 読み込みは自動でやってくれるが保存は手動(忘れないように注意!)
47 Properties . Settings . Default . Save ( ) ;
48 }
49 }
cs:Setting.cs
1 namespace Q5v7v77os02rppz ;
2
3 public partial class Setting : Form
4 {
5 public Setting ( )
6 {
7 InitializeComponent ( ) ;
8
9 // ユーザー設定値をコンボボックスに反映
10 comboBox1 . Text = Properties . Settings . Default . comboBox1Value ;
11
12 // 以下デザイナで設定済
13 //comboBox1.Items.AddRange(new object[] { "default", "value1", "value2" });
14 //button1.DialogResult = DialogResult.OK;
15 //button2.DialogResult = DialogResult.Cancel;
16 //AcceptButton = button1;
17 }
18
19 private void Button1_Click ( object sender , EventArgs e )
20 {
21 // ユーザー設定値をコンボボックス値に変更
22 Properties . Settings . Default . comboBox1Value = comboBox1 . Text ;
23 }
24 }
注意点
コントロールやイベントは、適宜配置・設定してください。
.NET Frameworkの場合
System.Configuration
を参照に追加してください。
.NET(Core)の場合
Properties
フォルダ・Settings.settings
がデフォルトでは作られないので、プロジェクトのプロパティを開いて作成してください。