/// <summary> /// Dibuja el mapa resaltando los elementos seleccionados. /// </summary> public void DibujaElementos() { // Nos salimos si no hay elementos seleccionados. if (miLista.SelectedIndices.Count == 0) { MuestraTodoElMapa = true; return; } // Desabilita el mapa. Enabled = false; List <ElementoDelMapa> elementos = new List <ElementoDelMapa>(); foreach (int indice in miLista.SelectedIndices) { ListViewItem item = miLista.Items[indice]; // El Tag del item de la lista tiene que ser una vía. ElementoConEtiqueta elementoConEtiqueta = item.Tag as ElementoConEtiqueta; if (elementoConEtiqueta == null) { throw new InvalidOperationException("El Tag del item de la lista tiene que ser una ElementoConEtiqueta, pero es: " + item.Tag.GetType()); } // Añade el elemento a la lista. elementos.Add(elementoConEtiqueta.ElementoDelMapa); } // Busca el rango visible para los elementos. const float margen = 0.0005f; RectangleF rectánguloQueEncierra = RectanguloQueEncierra(elementos); RectangleF rectánguloVisible = new RectangleF( rectánguloQueEncierra.X - margen, rectánguloQueEncierra.Y - margen, rectánguloQueEncierra.Width + (2 * margen), rectánguloQueEncierra.Height + (2 * margen)); DibujaObjectosAdicionales(elementos); // Muestra el mapa en la region deseada. RectánguloVisibleEnCoordenadas = rectánguloVisible; MuestraTodoElMapa = false; // Envía el evento. if (DibujóElementos != null) { DibujóElementos(this, new EventArgs()); } // Dibuja el mapa. Enabled = true; Refresh(); }
/// <summary> /// Retorna los elementos seleccionados. /// </summary> public IList <ElementoConEtiqueta> ObtieneElementosConEtiquetaSeleccionados() { List <ElementoConEtiqueta> elementos = new List <ElementoConEtiqueta>(); foreach (int indice in Lista.SelectedIndices) { ListViewItem item = Lista.Items[indice]; // El Tag del item de la lista tiene que ser un ElementoConEtiqueta con un PDI. ElementoConEtiqueta elemento = item.Tag as ElementoConEtiqueta; if (elemento == null) { throw new InvalidOperationException(string.Format("El Tag del item de la lista tiene que ser un ElementoConEtiqueta, pero es: {0}", item.Tag.GetType())); } // Añade el elemento a la lista. elementos.Add(elemento); } return(elementos); }
/// <summary> /// Añade un item a la lista. /// </summary> /// <param name="elElementoConEtiqueta">El elemento dado.</param> /// <param name="elColorDeFondo">El color de fondo.</param> /// <param name="elGrupo">El grupo.</param> /// <param name="losSubItemsAdicionales">Los textos de los subitems adicionales</param> public virtual void AñadeItem(ElementoConEtiqueta elElementoConEtiqueta, Color elColorDeFondo, ListViewGroup elGrupo, params string[] losSubItemsAdicionales) { ElementoDelMapa elemento = elElementoConEtiqueta.ElementoDelMapa; string tipoComoTexto = string.Empty; if (elemento.Tipo != null) { tipoComoTexto = ((Tipo)elemento.Tipo).ToString(); } List <string> subItems = new List <string> { elemento.Número.ToString(CultureInfo.CurrentCulture).PadLeft(6), tipoComoTexto, elemento.Descripción, elemento.Nombre }; subItems.AddRange(losSubItemsAdicionales); ListViewItem item = new ListViewItem(subItems.ToArray()) { BackColor = elColorDeFondo, Group = elGrupo, Tag = elElementoConEtiqueta }; if (VirtualMode) { if (elGrupo != null) { throw new ArgumentException("No se pueden añadir grupos a lista virtuales. Ponga VirtualMode = false"); } misItemsVirtuales.Add(item); } else { Items.Add(item); } }
/// <summary> /// Añade un item a la lista. /// </summary> /// <param name="elElementoConEtiqueta">El elemento dado.</param> /// <param name="elColorDeFondo">El color de fondo.</param> /// <param name="elGrupo">El grupo.</param> /// <param name="losSubItemsAdicionales">Los textos de los subitems adicionales</param> public virtual void AñadeItem(ElementoConEtiqueta elElementoConEtiqueta, Color elColorDeFondo, ListViewGroup elGrupo, params string[] losSubItemsAdicionales) { ElementoDelMapa elemento = elElementoConEtiqueta.ElementoDelMapa; string tipoComoTexto = string.Empty; if (elemento.Tipo != null) { tipoComoTexto = ((Tipo)elemento.Tipo).ToString(); } List<string> subItems = new List<string> { elemento.Número.ToString(CultureInfo.CurrentCulture).PadLeft(6), tipoComoTexto, elemento.Descripción, elemento.Nombre}; subItems.AddRange(losSubItemsAdicionales); ListViewItem item = new ListViewItem(subItems.ToArray()) { BackColor = elColorDeFondo, Group = elGrupo, Tag = elElementoConEtiqueta }; if (VirtualMode) { if (elGrupo != null) { throw new ArgumentException("No se pueden añadir grupos a lista virtuales. Ponga VirtualMode = false"); } misItemsVirtuales.Add(item); } else { Items.Add(item); } }
/// <summary> /// Añade un item a la lista. /// </summary> /// <param name="elElementoConEtiqueta">El elemento dado.</param> /// <param name="elColorDeFondo">El color de fondo.</param> /// <param name="losSubItemsAdicionales">Los textos de los subitems adicionales</param> public void AñadeItem(ElementoConEtiqueta elElementoConEtiqueta, Color elColorDeFondo, params string[] losSubItemsAdicionales) { AñadeItem(elElementoConEtiqueta, elColorDeFondo, null, losSubItemsAdicionales); }
/// <summary> /// Añade un item a la lista. /// </summary> /// <param name="elElementoConEtiqueta">El elemento dado.</param> /// <param name="elGrupo">El grupo.</param> /// <param name="losSubItemsAdicionales">Los textos de los subitems adicionales</param> public void AñadeItem(ElementoConEtiqueta elElementoConEtiqueta, ListViewGroup elGrupo, params string[] losSubItemsAdicionales) { AñadeItem(elElementoConEtiqueta, BackColor, elGrupo, losSubItemsAdicionales); }
/// <summary> /// Añade un item a la lista. /// </summary> /// <param name="elElementoConEtiqueta">El elemento dado.</param> /// <param name="losSubItemsAdicionales">Los textos de los subitems adicionales</param> public void AñadeItem(ElementoConEtiqueta elElementoConEtiqueta, params string[] losSubItemsAdicionales) { AñadeItem(elElementoConEtiqueta, BackColor, null, losSubItemsAdicionales); }