Tengo un formulario de múltiples formas, en el panel izquierdo hay un árbol y en el panel derecho hay un Panel. Las selecciones de árbol dan como resultado que UserControls específicos se carguen en el Panel. En este caso, dado que el formulario padre siempre está cargado, no puedo enganchar en el evento Mostrado del formulario principal.Cómo llamar a un método en un UserControl después de que se muestra?
La mayoría de mis CU tienen un DataGridView desatado sobre ellos que necesita ser rellenado cuando se crea el UC. Puede haber 50,000 filas agregadas en el frente a veces, desde una base de datos de SQL Server.
Hasta ahora he llenado las cuadrículas durante el constructor de UC, pero desde que comenzamos a trabajar con 50,000 filas, las cosas han cambiado. He descubierto que llenar la grilla con 50,000 filas del constructor toma al menos 15 minutos por alguna razón loca. Sin embargo, si espero llenar la cuadrícula hasta que haga clic en un botón o desde el evento Cargar, demora 15 segundos. Esto es un misterio. Así que estoy tratando de mover la carga de la grilla a otra parte.
Cuando intento llenar la cuadrícula del evento Load, sin embargo, hay inconsistencias visuales. Lo que ocurre es que aparece una versión pequeña de mi CU, tarda 15 segundos en cargar las filas DGV y, a continuación, la UC se expande para llenar el Panel (la propiedad del Dock UC está configurada como Rellenar). Entonces tampoco me gusta esta opción.
El evento Mostrado sería un lugar perfecto para cargar mi grilla, si existía para UC. ¿Alguien sabe de otra manera de hacer esto?
Una mejor pregunta es ¿por qué se tarda 15 minutos en cargar en el constructor, pero 15 segundos en otro lugar. – Justin
Probablemente porque la lógica de su población se está ejecutando sobre la base de algo que cambia muchas veces durante la construcción de la forma, o está cargando caché cargando varios DGV en carga de formularios. – KeithS
Las ideas son bienvenidas sobre por qué esto está sucediendo. Prefiero quedarme con mi enfoque anterior. El código consiste en una llamada a la base de datos (los datos no cambian) y llenar un único DGV. Hay una diferencia entre llamar desde el constructor y llamar desde el botón: se está llamando al constructor desde dentro de una cadena de BackgroundWorker. ¿Podría ser esa la causa? –