0

Form1Form2の2 つのフォームがあります。Form1にはcheckedlistboxがあります:checkedlistbox1

私が必要とするのは、Form2 からボタンをクリックすると、checkedlistbox 項目がクリアされるはずです。検索から、このコードを見つけて適用しましたが、機能しませんでした。

using (Form1 form1 = new Form1())
      {
          form1.checkedListBox1.Items.Clear();
      }

しかし、うまくいきませんでした。いくつかのアイデアを提案してください。

4

9 に答える 9

3

なぜなら、あなたがするとき

using (Form1 form1 = new Form1())

の新しいインスタンスを実際に作成していますForm1。それがうまくいかない理由です。の現在のインスタンスを取得する必要がありますForm1

foreach (var item in Application.OpenForms)
{
    Form1 form1 = item as Form1;
    if (form1 != null)
    {
        form1.checkedListBox1.Items.Clear();
    }
}

またはおそらく

((Form1) Application.OpenForms["Form1"]).checkedListBox1.Items.Clear();
于 2012-06-25T07:01:56.730 に答える
3

表示されていない新しいフォームを作成していて、そのフォームのリスト ボックスをクリアしています。必要なのは、すでに開いているフォームへの参照です。したがって、開く場所Form1(program.cs から多分?) に Form1 への参照を保存して、その参照を使用できるようにしますform2checkedListBox1.Items.Clear();

于 2012-06-25T06:58:47.330 に答える
1

あなたがしたことは、Form1の新しいインスタンスを作成することです。すでに作成されているもの(リストがいっぱいになっているもの)にアクセスしてから、クリアする必要があります。

于 2012-06-25T06:58:12.040 に答える
1

現在表示されているフォームで Form1 のインスタンスにアクセスする場合は、Form1 のインスタンスを Form2 に渡す必要があります。
次の方法で Form1 内から Form2 を表示している場合、

Form2 form2 = new Form2();            
  form2.ShowDialog(this);

次に、使用できます。

using (Form1 form1 = ((Form1)Owner))
  {
    form1.checkedListBox1.Items.Clear();
  }
于 2012-06-25T06:58:47.233 に答える
0

Form1のチェックボックスのmodifiersプロパティをチェックするか、publicに変更します

于 2012-06-25T07:02:45.310 に答える
0

フォーム1で、チェックボックス1の修飾子をパブリックに設定します。form1がすでに開かれている場合、form2のコードは次のようになります。

 private void button1_Click(object sender, EventArgs e)
    {
        form1.checkBox1.Checked = false;

    }
于 2012-06-25T07:03:28.623 に答える
0

あなたがしなければならないことがいくつかあります:

  • form1のアクセス修飾子がパブリックであることを確認してください
  • OnClickform2のボタンイベントに登録する
  • Form2からForm1の参照を取得し、form1referenceと呼びましょう
  • クリックイベントでは、次のように書く必要があります。form1reference.checkedListBox1.Items.Clear();
于 2012-06-25T06:56:09.603 に答える
0

ここで Form1 の新しいインスタンスを作成していますが、機能しません。Owner などのプロパティを使用します。このようなことを試してください。

var myowner = this.Owner as Form1;
myowner.checkedListBox1.Items.Clear(); 
于 2012-06-25T06:59:46.300 に答える
0

から CheckBoxList を公開しForm1.Designer.csます。

それで

private void button1_Click(object sender, EventArgs e)
{
    Form1 form1 = new Form1();
    form1.Show();   
    //form1.checkedListBox1.SetItemChecked(0, true);
    form1.checkedListBox1.Items.Clear(); 
}
于 2012-06-25T07:13:22.270 に答える