【问题标题】:selecting item from listview in C#从 C# 中的列表视图中选择项目
【发布时间】:2012-11-09 22:05:40
【问题描述】:

我正在尝试从列表视图中选择一个项目,当我选择它时,它应该在一个文本框中显示每个项目。我可以选择并获取第一项,但是当我选择第二项时出现错误,

“参数超出范围异常未处理,InvalidArgument='0' 的值对 'index' 无效。”

我有下面的代码,请帮助我..

public partial class Form2 : Form
{
  List<Person> people = new List<Person>();
}

class Person
{
  public string Name{ get; set; }

  private void button2_Click(Object sender, EventArgs e)
  {
    Person p = new Person();
    p.Name = textBox1.Text;
    people.Add(p);
    listBox1.Items.Add(p.Name);
  }

  private void listView1_SelectedIndexChanged(object sender, EventArgs e)
  {
    textBox1.Text = people[listView1.SelectedItems[0].Index].Name;
  }
}

【问题讨论】:

  • 如果未选择任何项目,则 SelectedItems[0] 将没有任何内容,并且会抛出 Argument out of range 异常
  • 您正在向 listBox1 添加项目,但随后您尝试引用 listView1 的选定项目

标签: c#


【解决方案1】:
 private void listView1_SelectedIndexChanged(object sender, EventArgs e)
 {
   if(listView1.SelectedItems.Count > 0)
     textBox1.Text = people[listView1.SelectedItems[0].Index].Name;
 }

【讨论】:

    【解决方案2】:

    有一小段时间没有选择项目:就在第一个被取消选择之后和新的被选择之前。如果有一个项目被选中,你应该检查你的代码,然后再做任何你想做的事情。

    【讨论】:

      【解决方案3】:

      我建议您只检查 ListBox 对象的 "Items" 属性中的数据,并将其与您拥有的 "people" 变量进行比较。确保它们在触发"SelectedIndexChanged" 事件时不同步。

      希望对你有帮助

      干杯

      【讨论】:

        【解决方案4】:

        如果您想列出您的人员并删除列出人员,您需要执行以下操作:

        -添加到将返回Person.Name的Person函数ToString(),ListBox可以保留任何对象,但显示的文本是object.ToString()

        public override string ToString() 
        {
          return Name;
        }
        

        -单击按钮时,您必须将人员添加到 listView1,而不是人名:

        private void button2_Click(object sender, EventArgs e)
        {
            Person p = new Person();
            p.Name = textBox1.Text;
        
            people.Add(p);
            listBox1.Items.Add(p);
        }
        

        -现在你可以得到你的人了,因为listView现在保留Person,而不是String

        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {
          textBox1.Text = ((Person)listView1.SelectedItems[0]).Name;
        }
        

        【讨论】:

          猜你喜欢
          • 2012-04-04
          • 2016-10-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-02-12
          相关资源
          最近更新 更多