克隆DataBound选中的列表框

时间:2011-01-04 08:49:49

标签: c# .net clone checkedlistbox

我有一个DataBound CheckedListBox,我“检查”列表框(源)上的几个项目,然后我需要将其克隆到新的Checked List Box(目标)。它需要具有检查状态的所有数据。我试过以下功能。它正好通过这个功能。

但最后我可以看到目标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;
    }

2 个答案:

答案 0 :(得分:1)

你可以在这里看到正确的答案..

Programatically Checking DataBound CheckListBox

答案 1 :(得分:0)

尝试设置

source.DataSource = target.DataSource;
target.DisplayMember = "YourDisplayItem";
target.ValueMember = "YourValueItem";
foreach (int checkedItemIndex in source.CheckedIndices)
{
     target.SetItemChecked(checkedItemIndex, true);
}