You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ListBox删除选中项时如何同步删除关联空白行?

解决方案

最优方案:通过样式设置实现项间距(推荐)

别手动添加空白行,直接利用ListBox的样式属性或自定义绘制来控制项间距,从根源避免管理空白行的麻烦:

  • WinForms场景:设置ListBox.ItemHeight为默认高度加所需间距值,比如默认项高度20,要留5px间距就设ListBox1.ItemHeight = 25;,每个项会自带底部间距,无需额外添加空白行。也可以重写DrawItem事件,自定义绘制时在项之间预留空白区域。
  • WPF场景:给ListBox.ItemContainerStyle中的Margin或Padding设置间距值,示例代码:
    <ListBox>
        <ListBox.ItemContainerStyle>
            <Style TargetType="ListBoxItem">
                <Setter Property="Margin" Value="0 0 0 5"/>
            </Style>
        </ListBox.ItemContainerStyle>
    </ListBox>
    

保留空白行方案:精准删除关联项

如果必须保留手动添加空白行的逻辑,删除时要根据添加规则找到关联的空白行一起删除:
假设你的添加逻辑是每添加一个内容项,就紧接着添加一个空白行(最后一个内容项后不加),那么选中内容项时,它的下一个项就是空白行,删除时需同时移除这两个项:

if (ListBox1.SelectedIndex != -1)
{
    int selectedIndex = ListBox1.SelectedIndex;
    // 删除选中的内容项
    ListBox1.Items.RemoveAt(selectedIndex);
    // 检查下一个项是否为空白行,是则一并删除
    if (selectedIndex < ListBox1.Items.Count && string.IsNullOrEmpty(ListBox1.Items[selectedIndex].ToString()))
    {
        ListBox1.Items.RemoveAt(selectedIndex);
    }
}

如果空白行是插在内容项前面,则改为检查并删除选中项的前一个索引位置的项。


内容的提问来源于stack exchange,提问作者mac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 06:35:36