2016-08-03 14 views
0

私は無人機のIP、現在の位置、および希望する位置に関するリストビューを持っています。私の唯一の問題は、現在の位置または希望の位置が更新されたときに、同じIPを持つ新しい無人機を追加することです。私はちょうどその特定のIPの現在の位置と希望する位置の値を更新したい。C# - アイテムのリストビュー更新サブアイテム

  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); 


      } 
+0

このライン 'のListViewItem LV =新しいListViewItemには(ip_drone_master);'新しい 'ListViewItem'たびに作成されます。 'lv_lista_posicoes.FindItemWithText(ip_drone_master)'を使ってアイテムが最初に存在するかどうか検索することを意味しましたか? – Ash

+0

もし存在すれば、私は追加しませんか? –

+0

ええ....それはあなたが必要とする動作です場合。 – Ash

答えて

0

新しいListViewItemを作成しているようにあなたがアイテムを見つけて、それを更新する必要があるたびに見えます。

これを変更してみてください。これに

  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); 

  var lvCheck = lv_lista_posicoes.FindItemWithText(ip_drone_master); 
      ListViewItem lv = lvCheck ?? new ListViewItem(ip_drone_master); 
      lv.SubItems.Add(pos_atual_master); 
      lv.SubItems.Add(pos_desej_master); 
      if (lvCheck == null) lv_lista_posicoes.Items.Add(lv); 
+0

ListViewItem lv = lvCheck ??新しいListViewItem(ip_drone_master);疑問符は何をしていますか? –

+0

'??'はバイナリのヌルチェックと代入演算子です。だから 'var x = y ?? z; 'を意味するif(y == null)x = y; else x = z; ' – Ash

+0

nvm。私はすでにチェックした。 Thx –

関連する問題