2017-01-12 4 views
-3

Я хочу знать, какой индекс массива класса Drone имеет тот же IP, как выпадающий списокC# - экземпляры класса

drones.ip_drone == cb_drone.SelectedText 

public partial class Arena : Form 
{ 
    private readonly Drone[] drone; 

    public Arena(params Drone[] drone) 
    { 
     InitializeComponent(); 
     this.drone = drone; 

    } 

    private void cb_drone_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     foreach (var drones in drone) 
     { 
      if(drones.ip_drone == cb_drone.SelectedText) 
      { 
       //which index of Drone[] drone?? 

      } 
     } 

    } 
+4

Почему бы вам не использовать цикл 'for', а затем точно знать, какой именно индекс. – Equalsk

+0

you're smartttt –

+0

Кроме того, вы используете неправильное свойство. Думайте о SelectedText как «HighlightedText». Вместо этого используйте 'SelectedItem.ToString()'. – LarsTech

ответ

0

Я думаю, что комбо был заполнен с объектами Drone , Если это так, вы можете получить прямой доступ к выбранному.

private void cb_drone_SelectedIndexChanged(object sender, EventArgs e) 
{ 
     var selectedDrone = cb_drone.SelectedItem as Drone; 
     if (selectedDrone != null) 
     { 
    // you can also use Array.IndexOf if need be 
     } 
} 
+0

У моего combobox есть только ip-дрон –

+0

Тогда вы можете использовать такой код: var index = drones.Select ((d, i) => new {IP = d.ip_drone, Index = i}). Одиночный (d => d.IP == cb_drone.SelectedText) .Index; –

0

Почему вы не изменить foreach для for вместо этого?

foreach (var index = 0; index < drone.Length; index++) 
{ 
    if(drone[index].ip_drone == cb_drone.SelectedText) 
    { 
     //index will have the value you are looking for 
    } 
} 

Однако это плохой дизайн. Следуйте рекомендациям @Cetin Basoz. Исследование свойства SelectedItem для связывания объекта с выпадающим списком вместо простого ip.

Смежные вопросы