2010-07-30 4 views
7

Es posible bind a property to an existing application setting using the designer, de esa manera no tiene que escribir algo comoactualizar automáticamente la configuración de aplicaciones utilizando la unión del diseñador VS.Net

textBox.Text = Settings.Default.Name; 

al inicializar mi forma.

Ahora parece que el enlace se detiene allí, es decir, si cambio el valor de mi configuración, no actualizará el valor en mi cuadro de texto y viceversa.

¿Es normal o me falta algo?

Respuesta

11

Explicaré cómo lo hago en los formularios de Windows con Visual Studio 2010. Es probable que sea similar en las versiones más recientes.

  1. Haga clic en el componente de obligar (cuadro de texto, casilla de verificación, ...)
  2. Marca de componente panel de propiedades visible
  3. Expandir el nodo ApplicationSettings
  4. Haga clic en el botón ... a la derecha de (PropertyBinding)

    Get application settings for component

  5. Elegir whi configuración de ch a la que desea que esté vinculado el control.

No es un tutorial más detallado a Exploring Secrets of Persistent Application Settings

+1

¿Cómo se guarda, he encontrado que si actualizo el cuadro de texto y cierro mi aplicación cuando la vuelvo a abrir, el valor anterior todavía está allí? – Zapnologica

+1

He probado que cerrando la aplicación usando el botón de detención de depuración la configuración del usuario no se guarda. Debe cerrar la aplicación correctamente (botón de cruz roja). –

+0

¿Hay algún código que pueda llamar manualmente para persistir en la configuración? Por ejemplo, en el texto ¿Escucha modificada? o cada 10 segundos? – Zapnologica

1

Bueno, depende.

En primer lugar, no estoy seguro si estás hablando de WPF o Windows Forms, así que no asumiré ninguno de los dos.

En segundo lugar, no está "vinculando" nada. Está tomando el valor de Name y configura la propiedad Text igual a este valor. Usted está estableciendo una propiedad. Esto no tiene ningún efecto secundario mágico que vincule inextricablemente la propiedad Name con la propiedad Text.

En tercer lugar, puede cambiar la configuración, pero hasta que las guarde, no se vuelven a escribir en su app.config. En una aplicación de Windows Forms, que tendría que hacer algo como esto:

// event handler for the Form.Closed event. 
// this.FormClosed += FormClosed; 
void FormClosed(object sender, FormClosedEventArgs e) 
{ 
    Settings.Default.Name = textBox.Text; 
    Settings.Default.Save(); 
} 

en WPF, tendrá que utilizar la semántica de vinculación normales (lo que significa que evitar la molestia de ajustar todos los valores de la propiedad cuando se cierre) , pero aún debe atrapar el formulario cerrándose para que pueda guardar() la configuración.

Encuadernación:

<TextBox 
    xmlns:lol="clr-namespace:MyApplication.Settings" 
    Text="{Binding Name, Source={x:Static lol:Default}}" /> 

El Save() llamada sucede tanto como con el ejemplo de las formas, pero usted no tiene que hacer otra cosa que llamar a Save().

+0

Hay un malentendido. Yo * no * estoy escribiendo "textBox.Text = Settings.Default.Name;" gracias a la unión (ver enlace). Sé que si quiero que los cambios se guarden en el archivo de configuración, tengo que llamar específicamente a "Settings.Default.Save();". – user276648

Cuestiones relacionadas