Клониране на DataBound отметнато списъчно поле

Имам 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;
    }

person Buddhi Dananjaya    schedule 04.01.2011    source източник
comment
Кажете ни какво сте опитали. Операцията е доста тривиална.   -  person leppie    schedule 04.01.2011
comment
Къде копирате действителните елементи от един на друг?   -  person leppie    schedule 04.01.2011
comment
Покажете ни още код, за да знаем какво искате да направите   -  person Kimtho6    schedule 04.01.2011


Отговори (2)


Можете да видите верния отговор тук..

Програмна проверка на DataBound CheckListBox

person Community    schedule 13.01.2011

опитайте сет

source.DataSource = target.DataSource;
target.DisplayMember = "YourDisplayItem";
target.ValueMember = "YourValueItem";
foreach (int checkedItemIndex in source.CheckedIndices)
{
     target.SetItemChecked(checkedItemIndex, true);
}
person Binil    schedule 04.01.2011
comment
Както обясних във въпроса си, получавам стойности, но те не се проверяват, както в източника - person Buddhi Dananjaya; 04.01.2011