J'ai une forme avec beaucoup de TextBoxes et il y a aussi beaucoup de threads dans mon programme qui ont besoin de lire le contenu de ces TextBoxes (paramètres). Comme je ne peux pas accéder aux contrôles d'autres threads, j'ai décidé de créer une classe spéciale qui contiendra tous les paramètres, et si l'utilisateur en change, le contrôle appellera l'événement OnTextChanged et changera la valeur correspondante dans la classe. Mais si j'utilise cette approche, il y aura beaucoup de gestionnaires semblables Tike ceComment lier les propriétés du contrôle aux variables en C#?
private void txtCrap1_TextChanged(object sender, EventArgs e)
{
Settings.Crap1 = txtCrap1.Text;
}
Ce que je veux est de faire quelque chose comme ça
private void SetUpControlBindings()
{
AddBinding(txtCrap1, Settings.Crap1);
AddBinding(txtCrap2, Settings.Crap2);
}
private void AddBinding(object control, object value)
{
//Add entry to some kind of dictionary
}
private void UpdateValue(object sender, EventArgs e)
{
if (sender is TextBox)
{
//Search it in dictionary and change appropriate value
}
}
Mais je ne peux pas trouver tous les pointeurs de variables C# Des idées comment faire cela?
P.S. Je ne peux pas utiliser la réflexion puisque mon code sera obscurci après la compilation
upd: En fait, mon programme est un peu plus compliqué. Je n'ai pas seulement des boîtes de texte, mais des CheckBox, des NumericUpDowns etc. Je veux aussi que ma classe Settings contienne des objets supplémentaires comme des Lists.
En fait, mon programme est un peu plus compliqué. Je n'ai pas seulement des boîtes de texte, mais des CheckBox, des NumericUpDowns etc. Je veux aussi que ma classe Settings contienne des objets supplémentaires comme des Lists. – Poma
Vous pouvez toujours le faire en utilisant plusieurs gestionnaires de changement de dictionnaires avec des surcharges 'AddBinding' séparées. – SLaks