none
Cast DayOfWeek RRS feed

  • Pregunta

  • Hola necesito realizar un cast con el tipo de dato DayOfWeek

    foreach (Control control in this.pDays.Controls)
                {
                    // si algún control es un CheckBox
                    if (control is System.Windows.Forms.CheckBox)
                    {
                        // entonces revisamos su valor
                        var checkBox = control as System.Windows.Forms.CheckBox;
                        // si está seleccionado, entonces lo 
                        // agregamos a una lista temporal
                        var dayCopy = (DayOfWeek)checkBox.Tag;
                        if (checkBox.Checked)
                            _ActivityProgramWeekDay = _LineProgram.GetActivityProgramWeekDay(dayCopy);
                        resultado.Add(checkBox.Text);
                    }
                }

    Pero var dayCopy = (DayOfWeek)checkBox.Tag; tira una excepcion sin ningun msj amigable, necesito ese cat ya que

    GetActivityProgramWeekDay recibe un tipo de dato DayOfWeek


    José Maria Antunez

    miércoles, 10 de abril de 2019 18:04

Respuestas

  • Hola, pon un punto de parada en

    var dayCopy = (DayOfWeek)checkBox.Tag;

    Y verifica el contenido de la propiedad Tag. Qué valor tiene? Piensa que DayOfWeek es un enumerado y sólo se admitirán enteros dentro de su rango. 


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 10 de abril de 2019 18:12
    Moderador
  • Hola si, al parecer TAG es null, pero  var dayCopy = (DayOfWeek)checkBox.Tag;

    Me trae valor: {Text = "Lunes" CheckState = Checked}


    José Maria Antunez

    miércoles, 10 de abril de 2019 18:18

Todas las respuestas

  • Hola, pon un punto de parada en

    var dayCopy = (DayOfWeek)checkBox.Tag;

    Y verifica el contenido de la propiedad Tag. Qué valor tiene? Piensa que DayOfWeek es un enumerado y sólo se admitirán enteros dentro de su rango. 


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 10 de abril de 2019 18:12
    Moderador
  • Yo primero haría un cast a entero de la propiedad Tag. Pero verifica que antes sea convertible a entero

    if (int.TryParse(checkBox.Tag, out int number)
    {
      // es convertible a entero continuamos
      var dayCopy = (DayOfWeek)number;
      // resto código
    
    } 


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Propuesto como respuesta Carlos_Ruiz_M miércoles, 10 de abril de 2019 19:23
    miércoles, 10 de abril de 2019 18:17
    Moderador
  • Hola si, al parecer TAG es null, pero  var dayCopy = (DayOfWeek)checkBox.Tag;

    Me trae valor: {Text = "Lunes" CheckState = Checked}


    José Maria Antunez

    miércoles, 10 de abril de 2019 18:18
  • No puedes hacer un casteo de un valor null. Prueba mi segunda respuesta.


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 10 de abril de 2019 18:20
    Moderador
  • Hola. Puedes establecer en tiempo de diseño el Tag en los controles checkbox. 

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 10 de abril de 2019 18:25
    Moderador
  • Tuve un avance con el lo que me propusiste de de convertir a entero primero, pero al hacerlo me trao 0, y me trae el día domingo...


    José Maria Antunez

    miércoles, 10 de abril de 2019 18:47
  • Hola. Convert.ToInt32() devuelve un 0 si el dato no a convertir no es nulo o vacío. Un valor 0 en el enumerado DayOfWeek significa que es Domingo. Cómo estás rellenando la propiedad Tag de los CheckBox? Ahí es donde tienes el problema. Si aplicas el código de mi segunda respuesta en caso de que Tag no pueda ser convertido a entero no entraría en la condición. Revisa esos Tag por favor. 


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 10 de abril de 2019 19:59
    Moderador