ListBox ha establecido el origen de datos pero Actualizar no hace nada

Parece que estoy entendiendo mal el método ListBox.Refresh () y esperaba que alguien pudiera ayudarme.

Lo que estoy tratando de hacer:
Quiero cargar los datos de un cuadro de lista (fuente = tabla de una base de datos SQL) al inicializar un formulario de Windows. También cuando el usuario agrega datos a la base de datos, me gustaría que el cuadro de lista se actualice.

Lógica:
Tengo una base de datos sql como mi fuente, se establece como:

listBoxDays.DataSource = DBQuery.informationRetreval().DefaultView; 

DBquery.informationRetreval () es un método estático dentro de la clase estática my DBQuery. Todo lo que hace es configurar una tabla desde la base de datos y luego devuelve la tabla.

Configuré la fuente de datos dentro del mismo método que el initializeComponent (para que mi cuadro de lista se cargue con los datos existentes):

 public Settings() { InitializeComponent(); listBoxDays.DataSource = DBQuery.informationRetreval().DefaultView; } 

Cuando el usuario agrega más datos: llamo a un método en el que agrego los datos a la base de datos y luego llamo:

  listBoxDays.Refresh(); //update listbox 

El problema: Esto no actualiza el cuadro de lista. Al inicializar mi cuadro de lista, los datos se llenarán, pero después no cambiarán (por lo tanto, la actualización no funciona). ¿Porqué es eso? Podría establecer el DataSource de nuevo, pero eso se siente descuidado. Después de examinar parte de la documentación, noté el controlador de eventos DataSourceChanged que quizás sea más para lo que estoy buscando. Sin embargo, ¿por qué no actualizar el trabajo?

Gracias por su paciencia. Por favor, hágamelo saber si necesito ser más claro.

Actualizar (): obliga al control a invalidar su área de cliente e inmediatamente a redibujarse a sí mismo y a cualquier control secundario.

Actualizar no volverá a enlazar su control, solo hará que el control se vuelva a dibujar. Tendrás que volver a configurar el DataSource con

 listBoxDays.DataSource = DBQuery.informationRetreval().DefaultView; 

y vuelva a atarlo.

Fuente: Microsoft MSDN

Solo se actualizará cuando los objetos hayan cambiado (por ejemplo, una consulta diferente), no los datos. Puedes hacerlo:

 listBoxDays.DataSource = null; listBoxDays.DataSource = DBQuery.informationRetreval().DefaultView; 

para refrescarlo … cada vez que lo necesites.