改变Form1.Form2上的复选框状态.处理事件

本文关键字:复选框 状态 处理事件 Form1 Form2 改变 | 更新日期: 2023-09-27 18:04:25

几个小时以来,我一直在寻找这个特殊问题的解决方案。所以你们这些善良的Stackoverflow用户是我最后的救命稻草

这是我到目前为止所做的


这是Form2.cs

public partial class Form2 : Form
{
    Form1 newForm1;
    public Form2()
    {
        InitializeComponent();
    }
     private void Form2_Disposed(object sender, EventArgs e)
    {
      newForm1 = new Form1();
      newForm1.CheckBox1_Checked = false;
    }

这是在Form2.Designer.cs

partial class Form2
{
   ....
 private void InitializeComponent()
    {
      ....
      this.Disposed += new System.EventHandler(this.Form2_Disposed);
      ....
    }
   ....
}

这是在form .cs

public partial class Form1 : Form
{
  ....
  public bool CheckBox1_Checked
  {
      get { return checkBox1.Checked; }
      set { checkBox1.Checked = value; }
  }
  ....
}

因此,当我关闭Form2(带X)时,程序会通过dispose事件,但不会改变Checkbox状态。

我也试着使表单1。Checkbox1控件的公共和直接访问它(我的意思是不使用访问器,但仍然没有运气。

我怀疑newForm1是Form1的副本。但我不知道如何告诉"newForm1"是非常"Form1"对象

改变Form1.Form2上的复选框状态.处理事件

如果Form1已经打开,你可以这样做:(而不是使用Dispose使用closed event)Form1.cs

 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            _Form1 = this;
        }
        public static Form1 _Form1;
        public CheckBox chk { get { return checkBox1; } }
        private void button1_Click(object sender, EventArgs e)
        {
            Form2 gg = new Form2();
            gg.ShowDialog();
        }
    }

Form2.cs

public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
            this.FormClosed += new FormClosedEventHandler(Form2_FormClosed);
        }
        void Form2_FormClosed(object sender, FormClosedEventArgs e)
        {
            Form1._Form1.chk.Checked = false;
        }
    }
public partial class Form1 : Form
{
    public static Form1Instance;
    ...
    Form1.OnLoad(...)
    {
        Form1Instance=this;
    }
}
//now call using static variable
Form1.Form1Instance.CheckBox1_Checked=true;