1

form1 と form2 の 2 つのフォームがあります。button2 をクリックしたときに、checkedlistbox1 (form1) からリストボックス (form2) にチェック済みのアイテムを追加したいと考えています。どうやってやるの

フォーム1

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

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 form2 = new Form2();
        form2.Show();
    }
} 

フォーム2

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

    private void button2_Click(object sender, EventArgs e)
    {
        Form1 form1 = new Form1();
        foreach(string item in form1.checkedListBox1.CheckedItems)
        {
            listBox1.Items.Add(item);
        }
    }
}
4

2 に答える 2

1

Form1 を次のように変更します

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

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 form2 = new Form2(checkedListBox1);
        form2.Show();
    }
} 

フォーム2

public partial class Form2 : Form
{
    public Form2(CheckedListBox checkedListBox1)
    {
        InitializeComponent();
        foreach(string item in checkedListBox1.CheckedItems)
        {
            listBox1.Items.Add(item);
        }
    }
}
于 2012-11-21T14:00:12.843 に答える
0

いくつかの問題があります。

まず、ボタンを押すたびに新しいフォームを作成します。そのインスタンスを 1 つ作成しますか?

form1.checkedListBox12 つ目の問題は、このように form2 からアクセスできないことです。

そして、checkedListBox1.CheckedItemsが文字列のリストだとは思いません。アイテムのテキストまたは値を追加したい場合があります...

次のようなことを試してみてください:

フォーム1

public partial class Form1 : Form
{
    Form2 form2;
    public Form1()
    {
        InitializeComponent();
        form2 = new Form2(this);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        form2.Show();
    }

    public List<string> GetCheckedItems()
    {
        return this.checkedListBox1.CheckedItems;
    }
} 

フォーム2

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

    public Form2(Form1 parentForm)
    {
        InitializeComponent();
        this.form1 = parentForm;
    }

    private void button2_Click(object sender, EventArgs e)
    {
        foreach(string item in form1.GetCheckedItems())
        {
            listBox1.Items.Add(item);
        }
    }
}

コードを確認していませんが、このようなものになるはずです...

于 2012-11-21T14:03:46.833 に答える