更改Form2上的复选框的状态并保持状态

时间:2010-06-30 20:22:23

标签: c# winforms checkbox

我要做的就是更改form2上的复选框状态,并在压力后保持状态OK。 我有form1这是我的主要形式,它只有一个Strip菜单。 form1的代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }



        private void dialogToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form2 dialog = new Form2();

            dialog.ShowDialog();
        }
    }
}

Form2只有一个复选框和一个OK按钮。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace test
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void OK_Click(object sender, EventArgs e)
        {

            if (cbxForm2.Checked == true)
            {
                cbxForm2.Checked = true;
            }
        }
    }
}

如何更改我的代码,以便当我返回菜单时,组合框的状态就像我离开时一样?

1 个答案:

答案 0 :(得分:2)

您每次都在创建一个新的Form2

private void dialogToolStripMenuItem_Click(object sender, EventArgs e)
{
    // the 'new' keyword means you are creating an entirely new instance
    Form2 dialog = new Form2();
    dialog.ShowDialog();
}

这个新实例不知道之前的实例是什么样的,因此您需要存储CheckBox的状态并在打开Form2时分配值。

public partial class Form1 : Form
{
    // backing field to store the state
    bool checkBoxChecked;

    public Form1()
    {
        InitializeComponent();
    }

    private void dialogToolStripMenuItem_Click(object sender, EventArgs e)
    {
        Form2 dialog = new Form2();

        // assign the state
        dialog.CheckBoxChecked = this.checkBoxChecked;
        dialog.ShowDialog();

        // save the state
        this.checkBoxChecked = dialog.CheckBoxChecked;
    }
}

您还需要在Form2上添加一个属性,以便检索状态:

public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }

    public bool CheckBoxChecked
    {
        get { return cbxForm2.Checked; }
        set { cbxForm2.Checked = value; }
    }
}