コード例 #1
0
        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);
            }
        }