如何在C# ListBox中为选中项交替插入IZ+20与IZ-20条目?
解决方案
要实现为选中条目交替插入指定文本的需求,你可以按以下方式修改代码:
核心思路
- 仅处理选中条目:直接针对已选中的条目操作,而非遍历所有X开头的条目
- 倒序处理索引:避免插入新条目后导致后续条目索引偏移,保证插入位置准确
- 交替文本控制:用计数器判断奇偶性,实现
IZ+20 R0 FMAX和IZ-20 R0 FMAX的交替插入
修改后的代码
// 获取所有选中条目的索引,按从大到小排序(避免插入操作打乱后续索引) var selectedIndices = listBox1.SelectedIndices.Cast<int>().OrderByDescending(i => i).ToList(); int insertCounter = 0; foreach (int idx in selectedIndices) { // 根据计数器奇偶性选择要插入的文本 string insertText = insertCounter % 2 == 0 ? "IZ+20 R0 FMAX" : "IZ-20 R0 FMAX"; // 在选中条目的下一个位置插入文本(保证原条目在前,插入内容在后) listBox1.Items.Insert(idx + 1, insertText); insertCounter++; }
原代码的问题说明
- 原代码遍历所有X开头的条目,而非用户指定的已选中条目,会额外处理未选中的X条目
- 原代码将文本插入到选中条目的位置(
SelectedIndex),导致插入内容出现在原条目之前,与期望顺序相反 - 缺少交替文本的逻辑控制,无法实现两种文本的交替插入
内容的提问来源于stack exchange,提问作者Wadim
相关产品推荐
相关产品推荐

