private void rbnWarshall_Click(object sender, EventArgs e) { eliminarnodo = new Eliminarcs(2); eliminarnodo.Visible = false; eliminarnodo.control = false; eliminarnodo.ShowDialog(); if (eliminarnodo.control) { if (grafo.BuscarVertice(eliminarnodo.txteliminar.Text.Trim()) != null && grafo.BuscarVertice(eliminarnodo.txtelem.Text.Trim()) != null) { rbnRestaurar.Enabled = true; splitContainer1.Panel2Collapsed = false; splitContainer1.SplitterDistance = (int)(this.Width * 0.75); PnSimulador.Refresh(); PnSimulador.Visible = true; opc = 4; LblSimu.Text = "Simulacion: Algortimo de Warshall"; double t = 0; Duracion.Restart(); calcularMatricesIniciales(); algoritmoWarshall(); obtenerRutaPesoWarshall(eliminarnodo.txteliminar.Text.Trim(), eliminarnodo.txtelem.Text.Trim()); if (buscarRuta) { for (int x = 0; x < nodosRuta.Count; x++) { grafo.Colorear(nodosRuta[x]); pbCanvas.Refresh(); if (x + 1 < nodosRuta.Count) { grafo.ColoArista(nodosRuta[x].Valor, nodosRuta[x + 1].Valor); if (!EsDigrafo) grafo.ColoArista(nodosRuta[x + 1].Valor, nodosRuta[x].Valor); } Thread.Sleep(tiempo); } buscarRuta = false; } pbCanvas.Refresh(); Duracion.Stop(); t = Duracion.ElapsedMilliseconds / 1000; label2.Text = "El peso minimo entre los nodos es: "+ peso.ToString()+"\nEl tiempo recorrido es de: "+t.ToString()+"seg"; } else { MessageBox.Show("El nodo No se encuentra en el grafo", "Error Nodo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } }
private void btnDelNode_Click(object sender, EventArgs e) { eliminarnodo = new Eliminarcs(1); //eliminarnodo crea una ventana Eliminarcs con el valor de 1 eliminarnodo.Visible = false; //Se actualiza el dato Visible eliminarnodo.control = false; //Se asigna false a control antes de mostrar el form eliminarnodo.ShowDialog(); //Muestra el dialogo para eliminar un nodo if (eliminarnodo.control) { if (grafo.BuscarVertice(eliminarnodo.txteliminar.Text.Trim()) != null) //si se encuentra el nodo { grafo.ELiminarNodo(eliminarnodo.txteliminar.Text.Trim()); //Elimina un nodo con tener el valor string de este grafo.RestablecerGrafo(pbCanvas.CreateGraphics()); //Se reestablece el grafo y se redibuja para quitar el nodo pbCanvas.Refresh(); //Se refresca el canvas } else //si no { MessageBox.Show("El nodo No se encuentra en el grafo", "Error Nodo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } aristas = 0; foreach (CVertice nodo in grafo.nodos) { foreach (CArco a in nodo.ListaAdyacencia) aristas++; } if (grafo.nodos.Count == 0) { DesHabilitarControles(); } if (aristas == 0) { DesHabilitarControles(); } }
private void rbnEliminarArista_Click(object sender, EventArgs e) { aristas = 0; eliminarnodo = new Eliminarcs(2); eliminarnodo.Visible = false; eliminarnodo.control = false; eliminarnodo.ShowDialog(); if (eliminarnodo.control) { if (grafo.BuscarVertice(eliminarnodo.txteliminar.Text.Trim()) != null && grafo.BuscarVertice(eliminarnodo.txtelem.Text.Trim()) != null && grafo.Comprobararista(eliminarnodo.txteliminar.Text.Trim(), eliminarnodo.txtelem.Text.Trim())) { grafo.ElimiarArco(eliminarnodo.txteliminar.Text.Trim(), eliminarnodo.txtelem.Text.Trim()); if (!EsDigrafo) grafo.ElimiarArco(eliminarnodo.txtelem.Text.Trim(), eliminarnodo.txteliminar.Text.Trim()); grafo.RestablecerGrafo(pbCanvas.CreateGraphics()); pbCanvas.Refresh(); } else { MessageBox.Show("No existe esa arista", "Error Nodo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } foreach (CVertice nodo in grafo.nodos) { foreach (CArco a in nodo.ListaAdyacencia) aristas++; } if (aristas == 0) { rbnEliminarArista.Enabled = false; rbnRestaurar.Enabled = false; rbnWarshall.Enabled = false; rbnDijk.Enabled = false; btnRecorridoAnchura.Enabled = false; btnRecorridoProfundidad.Enabled = false; rbnBKruskal.Enabled = false; rbnBPrim.Enabled = false; } }