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;
}