1

問題は次のとおりです。

私の設定には、「check1_State」と「check2_State」という 2 つのブール値があります。フォームが読み込まれるたびに、2 つのチェックボックスを制御することになっています。

フォームが読み込まれるときのコードは次のとおりです。

checkBox1.Checked = Properties.Settings.Default.check1_State;
checkBox2.Checked = Properties.Settings.Default.check2_State; 

そのコードでは、checkBox1 のみが読み取られます。最初の行をコメントすると、2 行目は問題なく動作します。

フォームが読み込まれるたびにタイマーを配置するためになんとか機能させましたが、正しくやりたかったのです。これは、チェックボックスが実際には設定から​​読み取ることができることを示していますが、同時に2つ以上が要求された場合、明らかに機能しません。

なぜこれが起こっているのかについて何か考えはありますか?

4

1 に答える 1

0

初期データのロード状態を保持するためのフォームレベルフラグを設定できます

bool flag = false;

上記check1_Stateのフラグcheck2_State true

フォーム読み込みイベントで、プロパティからデータを読み込んだ後にフラグを設定する

checkBox1.Checked = Properties.Settings.Default.check1_State;
checkBox2.Checked = Properties.Settings.Default.check2_State;
flag = true;

サンプル :

public partial class Form1 : Form
{
    bool flag = false;
    public Form1()
    {
        InitializeComponent();
    }

    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        if (flag)
        {
            //save settings 
        }
    }

    private void checkBox2_CheckedChanged(object sender, EventArgs e)
    {
        if (flag)
        {
            //save settings 
        }
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        checkBox1.Checked = Properties.Settings.Default.check1_State;
        checkBox2.Checked = Properties.Settings.Default.check2_State;
        flag = true;
    }
}
于 2013-07-03T11:14:33.243 に答える