Cómo seleccionar automáticamente un elemento ListBox basado en el mes actual (VB.NET)

Tengo un programa de Visual Studio que importa las casillas seleccionadas en una base de datos de acceso como nuevo registro. Uno de los elementos que también se importa es un valor ListBox. Todos los elementos, incluyendo el elemento seleccionado de ListBox, se introducen en la multa de la base de datos.

En el momento actual, el usuario debe seleccionar manualmente el elemento ListBox. Me gustaría que el elemento ListBox sea elegido automáticamente.

Los contenidos de ListBox son una gama de combinaciones del mes/año que van desde "enero 2021" hasta "diciembre 2021", me gustaría que la combinación del mes/año sea elegida de acuerdo con qué mes y año es cada vez que maneja miba. La carga ocurre. Por ejemplo: una fecha/hora actual de "5/11/2021 12:11:21" elegiría automáticamente "Mayo 2021" El día y el tiempo específico no importan.

A continuación se muestra mi intento de selección automática. He añadido diciembre para que pueda probar el programa ahora. Si hay otros componentes que mejor me sirvan, por favor no dude en expresar su opinión!

Aquí está mi código para ese sub:

Sub mes privadoSelectionLogic() Handles MyBase.Load

    If DateTime.Now.ToString = ("12/dd/2020 HH:mm:ss") Then
        MonthList2021.SelectedItem = "January 2021"
    End If

    If DateTime.Now.ToString = ("1/dd/yyyy HH:mm:ss") Then
        MonthList2021.SelectedItem = "January 2021"
    End If
End Sub

Pregunta hecha hace 3 años, 4 meses, 28 días - Por binarybard


3 Respuestas:

  • MonthList2021.SelectedItem = Date.Now.ToString("MMMM yyyy")
    

    No es necesario If declaración. El especificador de formato "MMMM" es para el nombre completo del mes, por ejemplo "Enero", "MMM" es para la abreviatura, por ejemplo "Jan", "MM" es para el número acolchado, por ejemplo "01", y "M" es para el número sin pagar, por ejemplo "1".

    Respondida el Dec 18, 2020 a las 16:24 - por codemasterx

    Votos positivos: 0 | Votos negativos: 0

  • Hay un par de errores en tu código que están impidiendo que la selección automática del ListBox funcione correctamente. Aquí tienes algunas correcciones que puedes hacer:

    • En lugar de comparar DateTime.Now.ToString directamente con una cadena de fecha, debes comparar las partes individuales de la fecha (mes y año) con DateTime.Now.Month y DateTime.Now.Year respectivamente.
    • La función ToString() usada de esta forma no devolverá el formato de fecha y hora esperado, por lo que se deben utilizar métodos como Month(), Year() y ToString("MMMM") para obtener los valores correctos.

    Aquí tienes una versión corregida de tu código:

    vb
    Private Sub SelectionLogic() Handles MyBase.Load
        Dim currentMonth As Integer = DateTime.Now.Month
        Dim currentYear As Integer = DateTime.Now.Year
    
        Select Case currentMonth
            Case 1
                MonthList2021.SelectedItem = "January " & currentYear
            Case 2
                MonthList2021.SelectedItem = "February " & currentYear
            Case 3
                MonthList2021.SelectedItem = "March " & currentYear
            ' Continúa con el resto de meses
        End Select
    End Sub
    

    Con este código, se seleccionará automáticamente el elemento del ListBox correspondiente al mes actual y año actual cada vez que se cargue el formulario. Asegúrate de completar el resto de los casos del Select Case para todos los meses que tengas en tu ListBox.

    Respondida el Dec 19, 2020 a las 16:22 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Tu código actual solo comprueba si la fecha actual es exactamente igual a "12/dd/2020 HH:mm:ss" o "1/dd/yyyy HH:mm:ss", lo que solo sería verdadero durante un segundo cada año. Para seleccionar automáticamente el elemento ListBox según el mes actual, puedes utilizar el siguiente código:

    vb.net
    Private Sub MonthSelectionLogic() Handles MyBase.Load
        Dim currentMonth As String = DateTime.Now.ToString("MMMM")
        Dim currentYear As String = DateTime.Now.ToString("yyyy")
    
        For Each item As String In MonthList2021.Items
            If item.Contains(currentMonth) AndAlso item.Contains(currentYear) Then
                MonthList2021.SelectedItem = item
                Exit For
            End If
        Next
    End Sub
    

    Este código obtiene el mes y el año actuales y سپس itera a través de los elementos de ListBox. Para cada elemento, comprueba si contiene el mes y el año actuales. Si es así, selecciona ese elemento y sale del bucle. Este código seleccionará automáticamente el elemento ListBox que coincida con el mes actual, independientemente del día o la hora.

    Respondida el Dec 19, 2020 a las 16:26 - por Gemini

    Votos positivos: 0 | Votos negativos: 0