none
desactivar un boton de acuerdo a una accion determinada RRS feed

  • Pregunta

  • buenas noches a todos!! tengo el siguiente codigo y lo que necesito es que despues que se calcule el "mejor tiempo" se desactive el boton (btnIngresarTiempo) no permitiendo ingresar mas tiempos a esa fila seleccionada y volviendolo a habilitar cuando seleccione otra fila que tenga el mejor tiempo = "00:00:00".(donde todavia no le he cargado ningun tiempo)

    y si es posible que cuando este ingresando por ejemplo el 1° tiempo esa celda del datadridview donde lo ingreso que cambie de color (Para que sea mas facil de reconocer cuando este trabajando con esa fila) asi sucesivamente con los otros dos tiempos.

    se que no es muy complicado, pero me da mucho miedo agregar y sacar cosas por las dudas que deje de funcionar jajaj

    muchas gracias!!

      ' CREACION DE CONSTANTES
        Const COLUMNA_PRIMER_TIEMPO As Integer = 5
        Const COLUMNA_SEGUNDO_TIEMPO As Integer = 6
        Const COLUMNA_TERCER_TIEMPO As Integer = 7
        Const COLUMNA_MEJOR_TIEMPO As Integer = 8

        ' BOTON AGREGAR TIEMPO
        Private Sub btnAgregarTiempo_Click(sender As System.Object, e As System.EventArgs) Handles btnAgregarTiempo.Click
            'VALIDA HS VACIA (00:00:00)
            If dtpTiempo.Value.ToString("HH:mm:ss") = "00:00:00" Then
                MessageBox.Show("Debe ingresar un tiempo para poder continuar")
                dtpTiempo.Select()
                dtpTiempo.Focus()
                Exit Sub
            End If
            'CONFIRMA INGRESO DE TIEMPO DEL ATLETA CON APELLIDO.....
            Dim filaActual = Me.dgvTiempos.SelectedRows(0)
            If MessageBox.Show("Confirma ingresar el tiempo de: " & Environment.NewLine & CStr(filaActual.Cells(3).Value),
                               "Confirmar acción", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
                Dim valor As String = dtpTiempo.Value.ToString("HH:mm:ss")
                CargarSiguienteCelda(filaActual, valor)

                'limpiar el time picker
                dtpTiempo.Value = Date.FromOADate(0)
            End If
            btnActualizar.Enabled = True

            Ordenar()
        End Sub
     
        ' RECORRE LAS CELDAS, VALIDA QUE LA POSICION Q ESTE VACIA E INGRESA EL VALOR
        Private Sub CargarSiguienteCelda(ByRef filaActual As DataGridViewRow, valorAponer As String)
            ' recorre las columnas 4 a 6 que corresponden a los primeros tres tiempos
            For i As Integer = COLUMNA_PRIMER_TIEMPO To COLUMNA_TERCER_TIEMPO
                ' valida que la posicion este vacia, si es asi agrega el valor
                If String.IsNullOrEmpty(CStr(filaActual.Cells(i).Value).Trim()) OrElse CStr(filaActual.Cells(i).Value).Trim() = "00:00:00" Then 'busca la primer posición vacía d las celdas 4,5,6
                    filaActual.Cells(i).Value = valorAponer
                    If i = COLUMNA_TERCER_TIEMPO Then
                        'CALCULA EL TIEMPO MEDIO Y LO ASIGNA A LA COLUMNA MEJOR TIEMPO
                        Dim fila = dgvTiempos.CurrentRow
                        If fila IsNot Nothing Then
                            Dim Tiempos As New List(Of TimeSpan) From
                                                   {
                                                   TimeSpan.ParseExact(fila.Cells(COLUMNA_PRIMER_TIEMPO).Value.ToString, "c",
                                                                                      CultureInfo.InvariantCulture),
                                                   TimeSpan.ParseExact(fila.Cells(COLUMNA_SEGUNDO_TIEMPO).Value.ToString, "c",
                                                                       CultureInfo.InvariantCulture),
                                                   TimeSpan.ParseExact(fila.Cells(COLUMNA_TERCER_TIEMPO).Value.ToString, "c",
                                                                       CultureInfo.InvariantCulture)
                                                   }
                            fila.Cells(COLUMNA_MEJOR_TIEMPO).Value = Tiempos.OrderBy(Function(t) t.TotalSeconds).ToList()(1)
                        End If
                    End If
                    Exit Sub
                End If
            Next
        End Sub



    valeria heredia

    martes, 25 de julio de 2017 6:02

Respuestas

Todas las respuestas