0

私はこの特定の問題の解決策を数時間探していました。ですから、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);
      ....
    }
   ....
}

これは Form1.cs にあります

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

そのため、Form2 を (X で) 閉じると、プログラムは Disposed イベントを通過しますが、チェックボックスの状態は変更されません。

また、Form1.Checkbox1 コントロールを公開して直接アクセスしようとしました (アクセサーを使用しないことを意味しますが、それでもうまくいきません。

newForm1 は Form1 のコピーだと思います。しかし、「newForm1」がまさに「Form1」オブジェクトであることを伝える方法がわかりません

任意のヘルプをいただければ幸いです。

4

2 に答える 2

0
public partial class Form1 : Form
{
    public static Form1Instance;
    ...

    Form1.OnLoad(...)
    {
        Form1Instance=this;
    }
}

//now call using static variable
Form1.Form1Instance.CheckBox1_Checked=true;   
于 2013-03-17T14:32:23.173 に答える
0

Form1 が既に開いている場合は、これを行うことができます:(Dispose を使用する代わりに、closed イベントを使用します) 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;
        }

    }
于 2013-03-17T14:40:42.357 に答える