Mostrando entradas con la etiqueta convert. Mostrar todas las entradas
Mostrando entradas con la etiqueta convert. Mostrar todas las entradas

lunes, 4 de marzo de 2013

Cannot convert type System.Windows.Forms.Control[] to System.Windows.Forms.ComboBox

Este es un error común y muy sencillo de solucionar si estamos buscando por ejemplo un control dentro de un control de usuario con el siguiente código.

(el siguiente caso es la ejemplificacion para un ComboBox)

Convert.ToInt32(((ComboBox)ucLocalidadReal.Controls.Find("cbLocalidad", true)).SelectedValue.ToString()); 


 este código nos informara del siguiente error:

Cannot convert type 'System.Windows.Forms.Control[]' to 'System.Windows.Forms.ComboBox

Por lo tanto para solucionarlo, debe quedar así:

Convert.ToInt32(((ComboBox)ucLocalidadReal.Controls.Find("cbLocalidad", true).FirstOrDefault()).SelectedValue.ToString()); 




lunes, 25 de febrero de 2013

Convert XML a List Object- List Object a XML

  • El archivo XML
 <usuarios>
                 <usuario>
                        <FirstName>Pepe</FirstName>
                        <LastName>Gonzalez</LastName>
                 </usuario>
       
                 <usuario>
                         <FirstName>Fernando</FirstName>
                         <LastName>Lopez</LastName>
                 </usuario>
</usuarios>


  • La clase.
[XmlRoot(ElementName = "usuario")]
public class Usuario
{
         public string FirstName { get; set; }
         public string LastName { get; set; }
}

  •  Los metodos:
public static T XmlToObject<T>(string xml)
{
          using (var xmlStream = new StringReader(xml))
          {
                        var serializer = new XmlSerializer(typeof(T));
                        return (T)serializer.Deserialize(XmlReader.Create(xmlStream));
           }
}

  //path-> la ruta del archivo .xml
//nodePath -> "//usuarios/usuario"
public static List<T> XmlToObjectList<T>(string pathXml, string nodePath)
{
         var xmlDocument = new XmlDocument();
         xmlDocument.Load(pathXml);
         var returnItemsList = new List<T>();
     
          foreach (XmlNode xmlNode in xmlDocument.SelectNodes(nodePath))
         {
                      returnItemsList.Add(XmlToObject<T>(xmlNode.OuterXml));
         }
 
         return returnItemsList;
}

  • Finalmente llamamos al metodo:
 var List<Usuario> = Convertors.XmlToObjectList<Usuario>(@"C:\Usuarios.xml","//usuarios/usuario");