リストボックス1で選択したアイテムをリストボックス2に、またはその逆に移動しようとしています。 >>
と<<
の2つのボタンがあります。 listbox1でアイテムを選択し、>>
をクリックすると、アイテムがlistbox1からlistbox2に移動するはずです。
private void MoveListBoxItems(ListBox source, ListBox destination)
{
ListBox.SelectedObjectCollection sourceItems = source.SelectedItems;
foreach (var item in sourceItems)
{
destination.Items.Add(item);
}
while (source.SelectedItems.Count > 0)
{
source.Items.Remove(source.SelectedItems[0]);
}
}
private void button2_Click_1(object sender, EventArgs e)
{
MoveListBoxItems(listbox , lstActivity);
}
コードは正常に機能します。私はそれをテストしました。あなたの質問は「リストボックス1のアイテムをリストボックス2に移動しようとしています選択済み」です。
私はあなたのbutton2に問題があると思います。button2と以下のコードを削除してください
private void button2_Click_1(object sender, EventArgs e)
{
MoveListBoxItems(listbox , lstActivity);
}
次に、他のボタンを作成し、クリックイベントを作成します。
完全なソース:
private void MoveListBoxItems(ListBox source, ListBox destination)
{
ListBox.SelectedObjectCollection sourceItems = source.SelectedItems;
foreach (var item in sourceItems)
{
destination.Items.Add(item);
}
while (source.SelectedItems.Count > 0)
{
source.Items.Remove(source.SelectedItems[0]);
}
}
private void first2second_Click(object sender, EventArgs e)
{
MoveListBoxItems(FirstListbox, LastListbox);
}
private void second2first_Click(object sender, EventArgs e)
{
MoveListBoxItems(LastListbox, FirstListbox);
}
このコードは機能しています。複数のアイテムを選択する場合は、プロパティSelectionMode = MultiSimpleを変更します。
private void buttonMoveToListBox1_Click(object sender, EventArgs e)
{
if(listBox1.SelectedIndex != -1)
{
listBox2.Items.Add(listBox1.SelectedValue);
listBox1.Items.Remove(listBox1.SelectedValue);
}
}
private void buttonMoveToListBox2_Click(object sender, EventArgs e)
{
if(listBox2.SelectedIndex != -1)
{
listBox1.Items.Add(listBox2.SelectedValue);
listBox2.Items.Remove(listBox2.SelectedValue);
}
}
ここに2つのリストボックスがあります。左のリストボックスから名前を選択して[>>]ボタンをクリックすると、データは右のリストボックスに移動します
コード..currentItemText = LeftListBox.SelectedValue.ToString(); currentItemIndex = LeftListBox.SelectedIndex;
RightListBox.Items.Add(currentItemText);
if (myDataList != null)
{
myDataList.RemoveAt(currentItemIndex);
}
ApplyDataBinding();
私はこのコードを使用して解決しました:
private void MoveListBoxItems(ListBox poSource, ListBox poDestination)
{
while (poSource.SelectedItems.Count > 0)
{
poDestination.Items.Add(poSource.SelectedItems[0]);
poSource.Items.Remove(poSource.SelectedItems[0]);
}
}
削除されたすべての行で競合が発生するため、以下のコードを使用してください。
>>
for (int intCount = ListBox1.SelectedItems.Count - 1; intCount >= 0; intCount--)
{
ListBox2.Items.Add(ListBox1.SelectedItems[intCount]);
ListBox1.Items.Remove(ListBox1.SelectedItems[intCount]);
}
<<
for (int intCount = ListBox2.SelectedItems.Count - 1; intCount >= 0; intCount--)
{
ListBox1.Items.Add(ListBox2.SelectedItems[intCount]);
ListBox2.Items.Remove(ListBox2.SelectedItems[intCount]);
}
上記のものが機能しない場合は、これを試してください:
while (ListBox1.SelectedItems.Count > 0)
{
ListBox2.Items.Add(ListBox1.SelectedItems[0].Text);
ListBox1.SelectedItems[0].Remove();
}
より多くの種類の回答については、これを使用できます link