我在 Windows 窗体应用程序中有一个列表框。 我可以使用以下脚本轻松地在列表框中上下移动单个项目:
int newIndex = inputFiles.SelectedIndex + direction;
if (newIndex < 0)
newIndex = inputFiles.Items.Count-1;
if (newIndex >= inputFiles.Items.Count)
newIndex = 0;
object selected = inputFiles.SelectedItem;
inputFiles.Items.Remove(selected);
inputFiles.Items.Insert(newIndex, selected);
inputFiles.SetSelected(newIndex, true);
如何移动多个选定的项目?谢谢大家!
最佳答案
如果将所选索引复制到数组中,则可以循环遍历项目并适当更新索引:
private void btnDown_Click(object sender, EventArgs e) {
listBox1.BeginUpdate();
int[] indexes = listBox1.SelectedIndices.Cast<int>().ToArray();
if (indexes.Length > 0 && indexes[indexes.Length - 1] < listBox1.Items.Count - 1) {
for (int i = listBox1.Items.Count - 1; i > -1; --i) {
if (indexes.Contains(i)) {
object moveItem = listBox1.Items[i];
listBox1.Items.Remove(moveItem);
listBox1.Items.Insert(i + 1, moveItem);
listBox1.SetSelected(i + 1, true);
}
}
}
listBox1.EndUpdate();
}
private void btnUp_Click(object sender, EventArgs e) {
listBox1.BeginUpdate();
int[] indexes = listBox1.SelectedIndices.Cast<int>().ToArray();
if (indexes.Length > 0 && indexes[0] > 0) {
for (int i = 0; i < listBox1.Items.Count; ++i) {
if (indexes.Contains(i)) {
object moveItem = listBox1.Items[i];
listBox1.Items.Remove(moveItem);
listBox1.Items.Insert(i - 1, moveItem);
listBox1.SetSelected(i - 1, true);
}
}
}
listBox1.EndUpdate();
}
关于C# - 如何在列表框(Windows 窗体)内上下移动多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45883526/