【问题标题】:Remove the line below the selected item in a listbox删除列表框中所选项目下方的行
【发布时间】:2022-10-04 19:23:32
【问题描述】:

当我将一个项目添加到列表框中时,我还添加了一个新行,因为我希望在添加的每个项目之间有一个空行。当我删除一个选定的项目时,我还想删除我添加的空白行,否则我最终会在每个项目之间得到 2 个空白行,这是我遇到的问题,所以我想我是否可以删除选定的项目以及空白所选项目上方和下方的行这将起作用。有更好的方法吗?

ListBox1.Items.Remove(ListBox1.SelectedItem);

【问题讨论】:

  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如它目前所写的那样,很难准确地说出你在问什么。
  • ListBox1.Items.RemoveAt(ListBox1.SelectedIndex + 1); 您需要确保所选项目不在最底部。一种方法是检查ListBox1.SelectedIndex + 1 < ListBox1.Items.Count。
  • 这回答了你的问题了吗? Delete ComboBox Item by Index
  • @41686d6564standsw.Palestine 请查看我更新的问题

标签: c# winforms


【解决方案1】:

我已经输入了项目并区分什么是空白项目和什么是价值项目。在删除时,我有两者的参考。效果很好,看看有没有帮助。

这是一个例子:

形式:

private void Form1_Load(object sender, EventArgs e)
    {
        Data data = new Data { description = "Test1" };
        listBox1.Items.Add(data);
        data.BlankLine = new BlankItem(); 
        listBox1.Items.Add(data.BlankLine);

        data = new Data { description = "Test2" };
        listBox1.Items.Add(data);
        data.BlankLine = new BlankItem();
        listBox1.Items.Add(data.BlankLine);

        data = new Data { description = "Test3" };
        listBox1.Items.Add(data);
        data.BlankLine = new BlankItem();
        listBox1.Items.Add(data.BlankLine);

        data = new Data { description = "Test4" };
        listBox1.Items.Add(data);
        data.BlankLine = new BlankItem();
        listBox1.Items.Add(data.BlankLine);

    }

单击时删除项目的事件:

private void listBox1_Click(object sender, EventArgs e)
    {
        if((listBox1.SelectedItem != null && listBox1.SelectedItem.GetType() != typeof(BlankItem)))
        {
            Data item = (Data)listBox1.SelectedItem;
            listBox1.Items.Remove(item);
            listBox1.Items.Remove(item.BlankLine);
        }
            
    }

对象数据

public class Data
{
    public string description { get; set; }
    public BlankItem BlankLine { get; set; }

    public override string ToString()
    {
        return description;
    }
}

对象空白项

public class BlankItem
{
    public override string ToString()
    {
        return Environment.NewLine;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多