OVH Cloud OVH Cloud

Forcer la mise à jour d'un Label lié à un objet

22 réponses
Avatar
Pierre Y.
Bonjour,

Le titre n'est pas clair... Pas facile de trouver une phrase courte qui
explique ce dont j'ai besoin.

Alors voilà, j'ai ces objets là :

namespace Pierre
{
public class Database
{
public string Name;
public string Host;
public string Path;
public string Username;
public string Password;

public string ConnectionString {
get { return @"Database=" + Host + ":" + Path + ";Userna...";}
}
}

public class DatabaseCollection
{
public Database[] Databases;
}
}

Avec quelques attributs qui permettent de désérialiser le tout d'un
fichier XML comme celui là :

<?xml version="1.0"?>
<config xmlns="http://www.levosgien.net/Test/2005/08">
<database name="UnNom">
<host>LOCALHOST</host>
<path>D:\Databases\Test.fdb</path>
<user>SYSDBA</user>
<password>masterkey</password>
</database>
</config>

Donc au chargement de l'application, je désérialise le fichier dans une
DatabaseCollection et je *Bind* les propriétés des *Database* sur les
contrôles de la fenêtre.

Une combobox dans laquelle il y a la liste des *Database.Name* de
manière à pouvoir choisir une config dans la liste de celles lues dans
le fichier xml.

4 TextBox liées aux champ de la *Database* en cours.

1 Label qui affiche la ConnexionString de la *Database* en cours.

private void WinForm_Load(object sender, System.EventArgs e)
{
if (File.Exists("Config.xml"))
{
XmlTextReader xtr = new XmlTextReader("Config.xml");
XmlSerializer xs = new XmlSerializer(typeof(DatabaseCollection));

dc = (DatabaseCollection)xs.Deserialize(xtr);

cbConfigs.DataSource = dc.Databases;
cbConfigs.ValueMember = "Name";
cbConfigs.DisplayMember = "Name";

edHost.DataBindings.Add("Text",dc.Databases,"Host");
edPath.DataBindings.Add("Text",dc.Databases,"Path");
edUserName.DataBindings.Add("Text",dc.Databases,"Username");
edPassword.DataBindings.Add("Text",dc.Databases,"Password");

lbConnStr.DataBindings.Add("Text",dc.Databases,"ConnectionString");
}
}

Au chargment tout va pour le mieux, j'ai la liste de mes
*Database.Name* dans la combobox, quand je change la sélection, les
propriétés de la nouvelle *Database* sont affichées dans les contrôles
de la fenêtre.

Mon problème c'est que lors de l'édition des propriétés de la
*Database* courante, le Label lbConnStr qui contient la
ConnectionString calculée d'après les propriétés de la *Database* n'est
pas mis à jour.

Comment forcer la mise à jour du contenu de ce Label ?

Merci d'avance,

Pierre Y.

--
Pierre Y.
levosgien.net - http://cerbermail.com/?7dwZGWwOB0
(Cliquez sur le lien ci-dessus pour me contacter en privé)

Capitaine anglais : "Vous vous battez pour l'argent, nous on se bat
pour l'honneur !"
Robert Surcouf : "Vous avez raison, Monsieur, chacun de nous combat
pour ce qui lui manque."

2 réponses

1 2 3
Avatar
Merlin
Michael Moreno a écrit :
Il est possible de faire des property en C++ en utilisant les operateurs.



tout est possible... mais la feature existe ou non. Après on peut
simuler plein de choses avec des bricolages, là n'est pas la question.

--

///3rL1n________
www.e-naxos.com
gratuit section "Delphi Stargate"
Avatar
Merlin
ftrl a écrit :
Rires.



alors c'est bien lacoste :-)

--

///3rL1n________
www.e-naxos.com
gratuit section "Delphi Stargate"
1 2 3