gpt4 book ai didi

C# - 如何在列表框中上下移动多个项目(Windows 窗体)

转载 作者:行者123 更新时间:2023-11-30 23:09:18 25 4
gpt4 key购买 nike

我在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com