2つのリストボックスがあり、アイテムを相互に移動するためのコントロールがあります。エントリをlistBox1からlistBox2に移動すると、listBox1の最初のエントリが自動的に選択されます。選択されたアイテムは、移動されたそのlistBoxに存在しないため、論理的な動作です。ただし、ユーザーが再選択し続ける必要があるため、ユーザーが連続するアイテムを追加したい場合、これは厄介です。
アイテムをlistBox1からlistBox2に移動するコード:
private void addSoftware()
{
try
{
if (listBox1.Items.Count > 0)
{
listBox2.Items.Add(listBox1.SelectedItem.ToString());
listBox1.Items.Remove(listBox1.SelectedItem);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
if (listBox1.Items.Count > 0)
listBox1.SelectedIndex = 0;
listBox2.SelectedIndex = listBox2.Items.Count - 1;
}
論理的には、listBox1のSelectedIndexを、[追加]ボタンをクリックする前と同じままにしておきたいと思います。実際には、listBox1で選択したアイテムを次のアイテムにします。したがって、ユーザーがアイテム4を移動した場合、それが理にかなっている場合、選択されたアイテムは新しいアイテム4(アイテム5でしたが現在は4)である必要があります。行をコメントアウトした
listBox1.SelectedIndex = 0;
行を追加してみました
listBox1.SelectedIndex = listBox1.SelectedIndex + 1;
インデックスを元の状態から1つインクリメントしますが、違いはありません。