Измените состояние флажка в Form2 и сохраните состояние - PullRequest
0 голосов
/ 01 июля 2010

Все, что я пытаюсь сделать, это изменить состояние флажка на форме 2 и сохранить его после нажатия кнопки ОК.У меня есть 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 Ответ

2 голосов
/ 01 июля 2010

Вы создаете новый 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; }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...