1

DataBound CheckedListBox があり、リスト ボックス (ソース) でいくつかの項目を「チェック」し、それを新しいチェック リスト ボックス (ターゲット) に複製する必要があります。チェックされた状態で、すべてのデータが必要です。私は次の機能で試しました。この機能でちゃんと流れています。

しかし、最終的に、ターゲットの CheckedListBox にアイテムが表示されますが、ターゲットのアイテムはどれもチェックされていません。

 private void CloneCheckedListBox(CheckedListBox source, CheckedListBox target)
    {            
        foreach (int checkedItemIndex in source.CheckedIndices)
        {
            target.SetItemChecked(checkedItemIndex, true);
        }
    }

編集:

私はTabPageに配置したユーザーコントロールを持っています。そのユーザーコントロールには「CheckedListBox」があります。ユーザーが選択した(現在の)TabPage(ユーザーコントロール上)に値を入力して新しいTabPageを作成する必要があります。

だから、私がやったことは、新しいタブページを作成し、「Clone()」メソッドを呼び出すユーザーコントロールのコピーを取得することです。

「Clone()」メソッドでは、CheckedListBox クローン機能が必要です。

これがユーザーコントロールにある私のクローンコードです...

 public SearchMain Clone()
    {
        SearchMain smClone = new SearchMain();
        smClone.txtManufacturers.Text = this.txtManufacturers.Text;
        smClone.udPriceFrom.Value = this.udPriceFrom.Value;
        smClone.udPriceTo.Value = this.udPriceTo.Value;
        smClone.chkOld.Checked = this.chkOld.Checked;
        smClone.chkPrx.Checked = this.chkPrx.Checked;
        smClone.chkDisc.Checked = this.chkDisc.Checked;
        smClone.chkStock.Checked = this.chkStock.Checked;
        smClone.chkFirstDes.Checked = this.chkFirstDes.Checked;
        smClone.chkFirstPN.Checked = this.chkFirstPN.Checked;
        smClone.txtSuppPN.Text = this.txtSuppPN.Text;
        smClone.txtManuPN.Text = this.txtManuPN.Text;
        smClone.txtManufacturers.Text = this.txtManufacturers.Text;
        smClone.meDesAND.Text = this.meDesAND.Text;
        smClone.meDesOR.Text = this.meDesOR.Text;
        smClone.meDesNOT.Text = this.meDesNOT.Text;
        smClone.lbManufacSelected.Items.AddRange(this.lbManufacSelected.Items);
        smClone.lbSearchWithIn.Items.AddRange(this.lbSearchWithIn.Items);
        **CloneCheckedListBox(this.clbLang, smClone.clbLang);**
       // CloneCheckedListBox(this.clbTypes, smClone.clbTypes);
        return smClone;
    }
4

2 に答える 2

1

ここで正解を見ることができます..

プログラムによる DataBound CheckListBox のチェック

于 2011-01-13T05:49:31.180 に答える
0

セットしてみる

source.DataSource = target.DataSource;
target.DisplayMember = "YourDisplayItem";
target.ValueMember = "YourValueItem";
foreach (int checkedItemIndex in source.CheckedIndices)
{
     target.SetItemChecked(checkedItemIndex, true);
}
于 2011-01-04T09:43:37.967 に答える