cheetah--y 2015-07-25 11:56 采纳率: 100%
浏览 2223

winform中listview显示问题

为何第二次点击才显示第一次添加的内容
private void button7_Click(object sender, EventArgs e)
{
if (this.textBox7.Text == "" || this.textBox8.Text == "" || this.comboBox2.Text == "" || this.comboBox1.Text == ""
|| this.dateTimePicker5.Text == "" || this.comboBox3.Text == "" || this.textBox10.Text == "" || this.textBox11.Text == "")
{
MessageBox.Show("请将信息填写完整!");
return;
}
else
{
outpay pay = new outpay();
pay.ID = int.Parse(this.textBox7.Text);
pay.Money = int.Parse(this.textBox8.Text);
pay.PayWay = this.comboBox2.Text;
pay.PayType=this.comboBox1.Text;
pay.FromWhere=this.comboBox3.Text;
pay.PayTime = this.dateTimePicker5.Text;
pay.Owner=this.textBox10.Text;
pay.InFo=this.textBox11.Text;

            /*
            listView2.Items.Clear();
            foreach (outpay o in outPay)
            {
                string id = o.ID.ToString();
                ListViewItem lv = new ListViewItem(id);
                listView2.Items.Add(lv);
                lv.SubItems.AddRange(new string[] {o.Money.ToString(), o.PayType, 
                    o.PayWay,o.PayTime,o.FromWhere,o.Owner,o.InFo});
            */


             string[] str = new string[8];
             foreach (outpay o in outPay)
            {
                str[0] = this.textBox7.Text;
                str[1] = this.textBox8.Text;
                str[2] = this.comboBox2.Text;
                str[3] = this.comboBox1.Text;
                str[4] = this.dateTimePicker5.Text;
                str[5] = this.comboBox3.Text;
                str[6] = this.textBox10.Text;
                str[7] = this.textBox11.Text;
            ListViewItem item = new ListViewItem(str, 0);
            listView2.Items.Add(item);
            }

            outPay.Add(pay);
            SetOutPay();



            //button2_Click(sender, e);
            MessageBox.Show("添加成功!", "提示信息", 0, 0);
        }
  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-04 02:41
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在您的代码中,当您尝试将内容添加到ListView时,您似乎没有正确地设置列表项的子项目。为了使列表项具有正确的属性和值,请确保为每个字段分配一个索引,并将其作为子项目的键。

    例如:

    string[] str = new string[8];
    
    // 假设您已经获取了所有数据并存储在变量str中。
    foreach(outpay o in outPay){
        str[0] = o.ID.ToString();  // 您应该在这里填充相应的字符串。
        str[1] = o.Money.ToString();
        // ...
    }
    
    // 现在您可以像往常一样创建新的ListViewItem实例。
    for(int i=0; i<8; i++){
        ListViewItem item = new ListViewItem(str[i], i); // 使用索引而不是ID。
        listView2.Items.Add(item);
    }
    

    这将确保每次添加新条目时,其子项目(即字段)都会使用正确的索引来填充相应的值。

    评论

报告相同问题?