Comment enregistrer tous les parameters de formulaire sans déclarer chaque object?

J’ai un formulaire qui contient plusieurs zones de texte, boutons d’option, cases à cocher, etc. Actuellement, je sauvegarde leurs valeurs en les déclarant respectivement et en les enregistrant dans les parameters du programme:

Properties.Settings.Default.EmailFrom = txtbxEmailFrom.Text; 

Je voudrais trouver un moyen de parcourir tous les objects et d’enregistrer leurs parameters si possible afin de ne pas avoir à les déclarer individuellement.

Y a-t-il un moyen de faire cela? Ou un meilleur moyen d’enregistrer le texte de mes zones de texte, l’état de contrôle des cases à cocher et des boutons radio, etc.?

Vous pouvez utiliser la liaison de propriété aux parameters de l’application.

De cette façon, vous pouvez simplement sauvegarder les parameters en appelant Properties.Settings.Default.Save(); et vous n’avez pas besoin de boucler sur les contrôles, car les propriétés sont liées aux parameters et leurs valeurs sont automatiquement intégrées aux parameters lors de la modification.

Vous pouvez lier des propriétés à des parameters à l’aide de designer ou du code.

Utiliser Designer

sélectionnez votre contrôle au moment de la conception, puis dans la grid des propriétés, sous (ApplicationSettings) cliquez sur ... pour (PropertyBinding) et dans la boîte de dialog, liez les propriétés dont vous avez besoin aux parameters.

Utiliser le code

Vous pouvez lier des propriétés à des parameters, en utilisant le code de la même manière que lorsque vous liez des données à l’aide de code:

 this.textBox1.DataBindings.Add( new System.Windows.Forms.Binding("Text", Properties.Settings.Default, "Test", true, DataSourceUpdateMode.OnPropertyChanged)); 

Enregistrer les parameters

Pour enregistrer les parameters, il suffit d’appeler Save() sur un object de parameters, tel que Closing event of form:

 Properties.Settings.Default.Save(); 

Une façon de procéder consiste à parcourir tous les contrôles et à vérifier à chaque itération le type du contrôle actuel et à enregistrer en conséquence. Cependant, je ne suis pas trop sûr de ce que vous pouvez faire avec les RadioButtons / CheckBoxes.

 foreach (var c in this.Controls) { var _type = c.GetType(); if (_type == typeof(TextBox)) { // Cast it to a textbox and save it's text property } elseif (_type == typeof(ListBox) { // Cast it to a listbox and save it's items property } // So on... }