Es difícil determinar la causa exacta del problema sin ver el código, pero es posible que esté teniendo un problema de alcance de la colección. Es posible que esté declarando la colección dentro del procedimiento Read_Properties y que esté perdiendo el valor de la colección cuando el procedimiento finaliza.
Para resolver este problema, intente declarar la colección como una propiedad de la clase que contiene el grid personalizado. Esto asegurará que la colección se mantenga durante la vida útil del objeto y que pueda acceder a ella desde cualquier procedimiento en la clase. Por ejemplo:
También puede considerar agregar algún tipo de comprobación de errores o manejo de excepciones para detectar si hay algún problema al agregar elementos a la colección. Por ejemplo, si intenta agregar un elemento con la misma clave dos veces, puede generar un error en tiempo de ejecución.