Pregunta

Tengo un " archivo de configuración " en mi aplicación Winforms llamada Settings.settings con una clase parcial para métodos personalizados, etc. ¿Hay alguna forma de cargar / guardar configuraciones dinámicas basadas en claves arbitrarias?

Por ejemplo, tengo algunas vistas de lista en mi aplicación en las que quiero guardar / cargar los anchos de columna; En lugar de crear una configuración de ancho para cada columna para cada vista de lista, me gustaría un método simple para cargar / guardar los anchos automáticamente.

A continuación se muestra un ejemplo del método guardar que he intentado:

internal sealed partial class Settings
{
    public void SetListViewColumnWidths(ListView listView)
    {
        String baseKey = listView.Name;
        foreach (ColumnHeader h in listView.Columns)
        {
            String key = String.Format("{0}-{1}", baseKey, h.Index);
            this[key] = h.Width;
        }
    }
}

Al ejecutar ese código, aparece el error " No se encontró la propiedad de configuración 'TestsListView-0'. " ¿Hay algo que me esté faltando?

¿Fue útil?

Solución

Almacene sus configuraciones de ancho de columna en un objeto Serializable Xml. Es decir, algo que implementa IXmlSerializable luego se crea una sola entrada de configuración de ese tipo en Settings.settings.

Una buena opción probablemente sería un Diccionario Serializable Xml. Una rápida búsqueda de google encontró varias publicaciones de blog diferentes que Describe cómo implementar eso.

Como se mencionó en otras respuestas, deberá asegurarse de que este objeto sea una configuración de Usuario. Es posible que también deba inicializar la instancia de configuración. Es decir, crear una instancia XmlSerializableDictionary () y asignarla a la configuración si la configuración es nula. El subsistema de configuración no crea instancias predeterminadas de objetos de configuración compleja.

Además, si desea que esta configuración persista entre las versiones de ensamblaje (es decir, que se pueda actualizar), deberá actualizar la configuración al iniciar la aplicación. Esto se describe en detalle en Miha Markic's blog y blog de Raghavendra Prabhu .

Otros consejos

Creo que el error

  

La propiedad de configuración   No se encontró la 'clave'.

se produce porque el valor 'clave' no existe en su archivo de configuración (bastante explicativo).

Por lo que sé, no puede agregar valores de configuración mediante programación, es posible que deba investigar y agregar todas las configuraciones que necesita al archivo, aunque una vez que estén allí, creo que podrá para usar el tipo de código que has dado para guardar los cambios.

Para guardar los cambios, deberás asegurarte de que sean configuraciones de "Usuario", no "Aplicación".

El archivo de configuración es un XML bastante simple, por lo que puede ser capaz de atacar el problema escribiendo el XML directamente en el archivo, pero nunca lo he hecho, así que no puedo estar seguro de que funcionará, o lo recomendaría necesariamente ese enfoque.

http://msdn.microsoft.com/en-us/library /cftf714c.aspx es el enlace de MSDN para comenzar.

Puede hacer ajustes. Guardar () o similar en la configuración del usuario, pero tenga en cuenta que tales configuraciones NO se mantendrán en el archivo xxx.exe.config en el directorio de su aplicación, como cabría esperar. En realidad, van a algún lugar dentro de la carpeta del usuario (busque xxx.exe.config en su unidad para encontrarlo). La próxima vez que cambie manualmente xxx.exe.config en el directorio de su aplicación, el cambio misteriosamente no se aplicará (el sistema todavía está utilizando el guardado del directorio del usuario).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top