C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

チェックボックスの保存 /SGL (18/11/28(Wed) 21:26) #89435
Re[1]: チェックボックスの保存 /Azulean (18/11/28(Wed) 22:02) #89437
  └ Re[2]: チェックボックスの保存 /SGL (18/11/29(Thu) 15:35) #89452
    └ Re[3]: チェックボックスの保存 /SGL (18/11/29(Thu) 17:45) #89456
      └ Re[4]: チェックボックスの保存 /SGL (18/11/29(Thu) 18:38) #89457 解決済み


親記事 / ▼[ 89437 ]
■89435 / 親階層)  チェックボックスの保存
□投稿者/ SGL (1回)-(2018/11/28(Wed) 21:26:32)

分類:[C#] 

開発環境はVisualStudio2017、使用言語はC#です。
初心者です。C#以下のプログラミングのことが調べても全然わかりません。

Windowsフォームアプリケーションで

Form1のウインドウサイズをW400 H250とします。
Form1からForm2を開くボタンがあります。
Form2上にはチェックボックスとOKボタンがあります。 

Form2のチェックボックスにチェックが入りOKボタンを押すとForm2が閉じて
Form1のウインドウサイズがW400 H350になります。
チェックを外すと元のW400 H250に戻ります。

また、アプリケーションを終了してもチェックボックスの前回値、ウインドウサイズを保持しておきたいです。
保存先はプロジェクト>プロパティ>設定 に名前 SizeSetting 種類 bool スコープ ユーザー 値 False が初期設定です。

このアプリ作った場合の実際のプログラミングコードを教えてください。(失礼を承知の上で質問してますスミマセン><)
[ □ Tree ] 返信 編集キー/

▲[ 89435 ] / ▼[ 89452 ]
■89437 / 1階層)  Re[1]: チェックボックスの保存
□投稿者/ Azulean (1011回)-(2018/11/28(Wed) 22:02:26)
どこまで理解されているかわからなかったので、まずはこちらを紹介しておきます。
http://dobon.net/vb/dotnet/programing/mysettings.html

大まかにやらないと行けないことを述べると以下のことになります。

・チェックボックスの状態を Settings に保存するようにする。
・設定がアプリケーション再起動でも保持されるように、Settings.Default.Save をフォームを閉じられるとき(Form1 の OnFormClosed)か、Program クラスの Run メソッドの末尾に書く。
・次回起動時、Settings.Default のプロパティを確認して、true だったらフォームのサイズを変える。

そして、どのあたりがわからないか、試したコードの断片でも良いので示していただけると助言を得やすくなると思います。
[ 親 89435 / □ Tree ] 返信 編集キー/

▲[ 89437 ] / ▼[ 89456 ]
■89452 / 2階層)  Re[2]: チェックボックスの保存
□投稿者/ SGL (2回)-(2018/11/29(Thu) 15:35:22)
> 大まかにやらないと行けないことを述べると以下のことになります。
> 
> ・チェックボックスの状態を Settings に保存するようにする。
> ・設定がアプリケーション再起動でも保持されるように、Settings.Default.Save をフォームを閉じられるとき(Form1 の OnFormClosed)か、Program クラスの Run メソッドの末尾に書く。
> ・次回起動時、Settings.Default のプロパティを確認して、true だったらフォームのサイズを変える。

おっしゃられた通りに順番に解いていったら出来ました。ありがとうございました。

「Form1」
namespace WindowsFormsApp5
{
    public partial class Form1 : Form
    {
        public bool SizeSetting { get; set; }

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            if (Properties.Settings.Default.SizeSetting == true)
            {
                this.Size = new Size(400, 350);
                return;
            }
            else
            {
                this.Size = new Size(400, 250);
                return;
            }
        }

        private void Form1_Closing(object sender, FormClosingEventArgs e)
        {
            Properties.Settings.Default.SizeSetting = SizeSetting;
            Properties.Settings.Default.Save();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 form2 = new Form2(this);
            form2.Show();
        }
    }
}

「Form2」
namespace WindowsFormsApp5
{
    public partial class Form2 : Form
    {
        private Form1 Form1Instance;

        private bool Checked;

        public Form2(Form1 Form1Instance)
        {
            InitializeComponent();

            this.Form1Instance = Form1Instance;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            this.checkBox1.Checked = Properties.Settings.Default.SizeSetting;
        }

        private void Form2_Closing(object sender, FormClosingEventArgs e)
        {
            Properties.Settings.Default.SizeSetting = this.checkBox1.Checked;
            Properties.Settings.Default.Save();
        }

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            Checked = checkBox1.Checked;

            if (checkBox1.Checked == true)
            {
                Form1Instance.Size = new Size(400, 350);
                return;
            }
            Form1Instance.Size = new Size(400, 250);
        }
    }
}

[ 親 89435 / □ Tree ] 返信 編集キー/

▲[ 89452 ] / ▼[ 89457 ]
■89456 / 3階層)  Re[3]: チェックボックスの保存
□投稿者/ SGL (3回)-(2018/11/29(Thu) 17:45:26)
サンプルはうまくいったのですが
いざ、メインで開発してるアプリに実装したら
うまくいきませんでした。。。
なぜだろう。。。?

[ 親 89435 / □ Tree ] 返信 編集キー/

▲[ 89456 ] / 返信無し
■89457 / 4階層)  Re[4]: チェックボックスの保存
□投稿者/ SGL (4回)-(2018/11/29(Thu) 18:38:47)
解決しました。
解決済み
[ 親 89435 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -