【问题标题】:Clone a DataBound Checked List Box克隆数据绑定选中列表框
【发布时间】:2011-06-03 06:37:06
【问题描述】:

我有一个 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;
    }

【问题讨论】:

  • 所以告诉我们你尝试了什么。操作相当简单。
  • 你在哪里将实际项目从一个复制到另一个?
  • 向我们展示更多代码,以便我们知道您想要做什么

标签: c# .net clone checkedlistbox


【解决方案1】:

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

Programatically Checking DataBound CheckListBox

【讨论】:

    【解决方案2】:

    尝试设置

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

    【讨论】:

    • 正如我在问题中解释的那样,我正在获取值,但它们没有像在“源”中那样被检查
    猜你喜欢
    • 1970-01-01
    • 2015-12-17
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    • 2014-07-27
    相关资源
    最近更新 更多