C# - 更新Listview中行的值

时间:2016-08-02 22:22:49

标签: c# listview

我有无人机的IP,当前位置和所需位置的列表视图。我唯一的问题是,当更新当前位置或所需位置时,它会添加一个具有相同ip的新无人机。我只想更新该特定IP的当前位置和所需位置的值。

enter image description here

            ip_drone_master = this.master.ip_dron();
            ip_drone_slave = this.slave.ip_dron();

            PointF posicao_master = master.pos_atual();
            posicao_atual_master = posicao_master;

            PointF posicao_slave = slave.pos_atual();
            posicao_atual_slave = posicao_slave;

            pos_atual_master = " X: " + posicao_atual_master.X + " Y: " + posicao_atual_master.Y;
            pos_atual_slave = " X: " + posicao_atual_slave.X + " Y: " + posicao_atual_slave.Y;

            pos_desej_master = " X:  " + posicao_desejada_master.X + " Y:  " + posicao_desejada_master.Y;
            pos_desej_slave = " X:  " + posicao_desejada_slave.X + " Y:  " + posicao_desejada_slave.Y;

            ListViewItem item_master = lv_lista_posicoes.FindItemWithText(pos_atual_master);
            ListViewItem item_slave = lv_lista_posicoes.FindItemWithText(pos_atual_slave);

            ListViewItem item_master_desej = lv_lista_posicoes.FindItemWithText(pos_desej_master);
            ListViewItem item_slave_desej = lv_lista_posicoes.FindItemWithText(pos_desej_slave);


            if (item_master != null && item_master_desej != null)
            {

            }
            else
            {

                ListViewItem lv = new ListViewItem(ip_drone_master);
                lv.SubItems.Add(pos_atual_master);
                lv.SubItems.Add(pos_desej_master);                 
                lv_lista_posicoes.Items.Add(lv);

                chart1.Series[0].Points.Clear();
                chart1.Series[0].Points.AddXY(posicao_atual_master.X, posicao_atual_master.Y);

            }


            if (item_slave != null && item_slave_desej != null)
            {

            }
            else
            {                   
                ListViewItem lv2 = new ListViewItem(ip_drone_slave);
                lv2.SubItems.Add(pos_atual_slave);
                lv2.SubItems.Add(pos_desej_slave);
                lv_lista_posicoes.Items.Add(lv2);

                chart1.Series[1].Points.Clear();
                chart1.Series[1].Points.AddXY(posicao_atual_slave.X, posicao_atual_slave.Y);
            }

1 个答案:

答案 0 :(得分:1)

如果我看到的正确,您只需添加

的新项目
 lv_lista_posicoes.Items.Add(lv);

但永远不会删除它们。但是,如果您只想更改内容,则替换该项目是一种糟糕的方式。您可以跟踪单个元素(或通过IP搜索它们),只需通过调用

来更改内容
lv2.SubItems[0].Text = pos_atual_slave;
lv2.SubItems[1].Text = pos_desej_slave;

其中lv2是具有您要更新的IP的ListViewItem

另见this answer