コード例 #1
0
        private void buscarCaminho(object sender, EventArgs e)
        {
            string cidade1 = (cbxCidade1.SelectedItem == null ? null : cbxCidade1.SelectedItem.ToString()),
                   cidade2 = (cbxCidade2.SelectedItem == null ? null : cbxCidade2.SelectedItem.ToString());

            if (cidade1 == null || cidade2 == null)
            {
                MessageBox.Show("Selecione duas cidades");
                return;
            }

            if (cidade1 == cidade2)
            {
                MessageBox.Show("Selecione cidades diferentes");
                return;
            }

            ParametrosDeBusca p;

            if (rbDist.Checked)
            {
                p = ParametrosDeBusca.Distancia;
            }
            else if (rbTempo.Checked)
            {
                p = ParametrosDeBusca.Tempo;
            }
            else
            {
                p = ParametrosDeBusca.Preco;
            }

            lbCaminho.Items.Clear();
            Stack <String> caminhoInvertido = grafo.AcharCaminho(cidade1, cidade2, p);

            if (caminhoInvertido == null)
            {
                MessageBox.Show("Caminho não existente");
                return;
            }

            caminhoBusca = caminhoInvertido;
            lbCaminho.Items.AddRange(caminhoInvertido.Reverse().ToArray());

            lbCaminho.SelectedIndex = 0;
            maximizeCity            = cidades[lbCaminho.SelectedItem.ToString()];
            mapa.Invalidate();
        }