private void panelgrid_CellContentClick(object sender, DataGridViewCellEventArgs e) { //cogemos el índex de la columna clicada this.fila = e.ColumnIndex; //Si es la primera columna no podemos hacer nada porque son las cabeceras if (fila == 0) { MessageBox.Show("Clica en un plan de vuelo"); } //Si es cualquier otra fila, nos saldrá un mensaje con las distancias a cada uno de los demás planes de vuelos if (fila != 0) { //Si solo hay un vuelo en la lista, no hay distancias if (mylist.getcount() == 1) { MessageBox.Show("No hay más vuelos para calcular distancia"); } //Si hay dos vuelos, solo tendremos una distancia if (mylist.getcount() == 2) { MessageBox.Show("Distancia entre los vuelos: " + mylist.getposicion(0).Distance(mylist.getposicion(1))); } //Si hay más de dos vuelos: if (mylist.getcount() > 2) { //Mensaje que mostraremos (le vamos añadiendo líneas) string mensaje = "Distancias:" + "\n"; //Definimos dos parámetros que usaremos string id; double dist; //Cambiamos la variable fila = fila - 1; //Recorremos la lista hasta llegar a la posición del vuelo clicado int i = 0; if (i >= 0 && i != fila) { while (i < fila) { //Cogemos la ID y la distancia con el siguiente vuelo id = mylist.getposicion(i).GetID(); dist = mylist.DadmeDistancias(fila)[i]; //Añadimos distancia al mensaje mensaje = mensaje + "Con vuelo " + id + ": " + Convert.ToString(dist) + "\n"; i++; } } //Recorremos lo que falta de la lista if (i >= fila) { while (i < mylist.DadmeDistancias(fila).Count) { //Cogemos la ID y la distancia con el siguiente vuelo id = mylist.getposicion(i + 1).GetID(); dist = mylist.DadmeDistancias(fila)[i]; //Añadimos distancia al mensaje mensaje = mensaje + "Con vuelo " + id + ": " + Convert.ToString(dist) + "\n"; i++; } } MessageBox.Show(mensaje); } //if (fila == 0) // MessageBox.Show("Clica en un plan de vuelo"); ////nos da la distancia que hay entre el vuelo clicado y el anterior, si clicamos al de la última columna nos indica la distancia de él con el de la primera //if (fila != 0) //{ // //Creamos el parámetro // double distancia; // //cogemos el flightplan // FlightPlan fp = mylist.getposicion(fila - 1); // //Caso particular: si se clica encima del último vuelo, da la distancia entre ese y el primero // if (fila == mylist.getcount()) // distancia = fp.Distance(mylist.getposicion(0)); // //Todos los demás casos: // else // distancia = fp.Distance(mylist.getposicion(fila)); // //mostramos la distancia en un messagebox // MessageBox.Show("Distancia entre el vuelo en el que has clicado y el siguiente de la lista: " + distancia); } }