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));
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."
> 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 ?
Je ne suis pas sur d'avoir tout saisi.
Pourquoi ne peux-tu pas utiliser les evenements de l'interface graphique ou bien mettre les champs de la classe Database dans des property avec un evenement du genre onNewConnString lance a chaque fois que l'un des champs est modifie ?
> 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 ?
Je ne suis pas sur d'avoir tout saisi.
Pourquoi ne peux-tu pas utiliser les evenements de l'interface
graphique ou bien mettre les champs de la classe Database dans des
property avec un evenement du genre onNewConnString lance a chaque fois
que l'un des champs est modifie ?
--
Michael
----
http://michael.moreno.free.fr/
http://port.cogolin.free.fr/
> 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 ?
Je ne suis pas sur d'avoir tout saisi.
Pourquoi ne peux-tu pas utiliser les evenements de l'interface graphique ou bien mettre les champs de la classe Database dans des property avec un evenement du genre onNewConnString lance a chaque fois que l'un des champs est modifie ?
"Pierre Y." <pierre@[levosgien].net> a écrit dans le message de news:
Le titre n'est pas clair... Pas facile de trouver une phrase courte qui explique ce dont j'ai besoin.
Désolé, mais je crois n'avoir rien compris
F.
ftrl
Pierre Y. a écrit :
Comment forcer la mise à jour du contenu de ce Label ?
J'ai un truc similaire et je n'ai pas rencontré de problème (le champ "virtuel" est mis à jour correctement).
En revanche, j'accède aux membres de l'objet par des propriétés (je ne savais même pas qu'on pouvait faire autrement, j'utilise l'assistant qui crée les datasources à partir d'un objet), je ne sais pas si ça a une importance.
Jean
Pierre Y. a écrit :
Comment forcer la mise à jour du contenu de ce Label ?
J'ai un truc similaire et je n'ai pas rencontré de problème (le champ
"virtuel" est mis à jour correctement).
En revanche, j'accède aux membres de l'objet par des propriétés (je ne
savais même pas qu'on pouvait faire autrement, j'utilise l'assistant qui
crée les datasources à partir d'un objet), je ne sais pas si ça a une
importance.
Comment forcer la mise à jour du contenu de ce Label ?
J'ai un truc similaire et je n'ai pas rencontré de problème (le champ "virtuel" est mis à jour correctement).
En revanche, j'accède aux membres de l'objet par des propriétés (je ne savais même pas qu'on pouvait faire autrement, j'utilise l'assistant qui crée les datasources à partir d'un objet), je ne sais pas si ça a une importance.
Jean
Pierre Y.
Michael Moreno a écrit :
Pourquoi ne peux-tu pas utiliser les evenements de l'interface graphique ou bien mettre les champs de la classe Database dans des property avec un evenement du genre onNewConnString lance a chaque fois que l'un des champs est modifie ?
Tu as bien compris que j'essayais de travailler sur un "cas d'école", si j'ai bien suivi, le DataBinding, les BindingManager et le reste c'est l'implémentation du pattern observer ?
Bien sur que je peux travailler sur les évènements de l'interface graphique, mais pour ce que je veux faire ça donne ça :
edHost.TextChanged += new System.EventHandler(configEdits_TextChanged); edPath.TextChanged += new System.EventHandler(configEdits_TextChanged); edUserName.TextChanged += new System.EventHandler(configEdits_TextChanged); edPassword.TextChanged += new System.EventHandler(configEdits_TextChanged);
Donc à chaque fois que je choisis un nouvel item dans la ComboBox, le Label est redessiné 4 fois (puis ensuite à chaque fois que je modifie le texte des TextBox)
Je cherche seulement à utiliser correctement les outils que .NET met à ma disposition.
Si j'utilisais un Dataset tout irait beaucoup mieux : - Ca lirait les données depuis le fichier XML et le DataBinding est vraiment "two-way" puisque le DataBinding implémente un CurrencyManager plutôt qu'un PropertyManager.
Je n'aurais eu qu'à considérer ConnectionString comme un champ calculé de la DataTable et je pense que le Label aurait été redessiné correctement à chaque modification d'une des autres colonnes de la table.
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."
Michael Moreno a écrit :
Pourquoi ne peux-tu pas utiliser les evenements de l'interface graphique ou
bien mettre les champs de la classe Database dans des property avec un
evenement du genre onNewConnString lance a chaque fois que l'un des champs
est modifie ?
Tu as bien compris que j'essayais de travailler sur un "cas d'école",
si j'ai bien suivi, le DataBinding, les BindingManager et le reste
c'est l'implémentation du pattern observer ?
Bien sur que je peux travailler sur les évènements de l'interface
graphique, mais pour ce que je veux faire ça donne ça :
edHost.TextChanged += new System.EventHandler(configEdits_TextChanged);
edPath.TextChanged += new System.EventHandler(configEdits_TextChanged);
edUserName.TextChanged += new
System.EventHandler(configEdits_TextChanged);
edPassword.TextChanged += new
System.EventHandler(configEdits_TextChanged);
Donc à chaque fois que je choisis un nouvel item dans la ComboBox, le
Label est redessiné 4 fois (puis ensuite à chaque fois que je modifie
le texte des TextBox)
Je cherche seulement à utiliser correctement les outils que .NET met à
ma disposition.
Si j'utilisais un Dataset tout irait beaucoup mieux :
- Ca lirait les données depuis le fichier XML et le DataBinding est
vraiment "two-way" puisque le DataBinding implémente un CurrencyManager
plutôt qu'un PropertyManager.
Je n'aurais eu qu'à considérer ConnectionString comme un champ calculé
de la DataTable et je pense que le Label aurait été redessiné
correctement à chaque modification d'une des autres colonnes de la
table.
Mais c'est beaucoup moins rigolo :-)
A+
Pierre
--
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."
Pourquoi ne peux-tu pas utiliser les evenements de l'interface graphique ou bien mettre les champs de la classe Database dans des property avec un evenement du genre onNewConnString lance a chaque fois que l'un des champs est modifie ?
Tu as bien compris que j'essayais de travailler sur un "cas d'école", si j'ai bien suivi, le DataBinding, les BindingManager et le reste c'est l'implémentation du pattern observer ?
Bien sur que je peux travailler sur les évènements de l'interface graphique, mais pour ce que je veux faire ça donne ça :
edHost.TextChanged += new System.EventHandler(configEdits_TextChanged); edPath.TextChanged += new System.EventHandler(configEdits_TextChanged); edUserName.TextChanged += new System.EventHandler(configEdits_TextChanged); edPassword.TextChanged += new System.EventHandler(configEdits_TextChanged);
Donc à chaque fois que je choisis un nouvel item dans la ComboBox, le Label est redessiné 4 fois (puis ensuite à chaque fois que je modifie le texte des TextBox)
Je cherche seulement à utiliser correctement les outils que .NET met à ma disposition.
Si j'utilisais un Dataset tout irait beaucoup mieux : - Ca lirait les données depuis le fichier XML et le DataBinding est vraiment "two-way" puisque le DataBinding implémente un CurrencyManager plutôt qu'un PropertyManager.
Je n'aurais eu qu'à considérer ConnectionString comme un champ calculé de la DataTable et je pense que le Label aurait été redessiné correctement à chaque modification d'une des autres colonnes de la table.
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."
Pierre Y.
Francois Muller a écrit :
"Pierre Y." <pierre@[levosgien].net> a écrit dans le message de news:
Le titre n'est pas clair... Pas facile de trouver une phrase courte qui explique ce dont j'ai besoin.
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."
Francois Muller a écrit :
"Pierre Y." <pierre@[levosgien].net> a écrit dans le message de news:
Le titre n'est pas clair... Pas facile de trouver une phrase courte qui
explique ce dont j'ai besoin.
Désolé, mais je crois n'avoir rien compris
Qu'est-ce qu'il faut que je réexplique ?
--
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."
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."
Pierre Y.
> En revanche, j'accède aux membres de l'objet par des propriétés (je ne savais même pas qu'on pouvait faire autrement, j'utilise l'assistant qui crée les datasources à partir d'un objet), je ne sais pas si ça a une importance.
J'ai l'impression que c'est ce que je fais, j'accède aux membres de l'objet par des propriétés (en vrai, mais c'est plus simple dans un exemple aussi bateau de dire que tous les membres sont public).
Par contre je ne connais pas cet assistant qui crée les datasources à partir d'un objet, peut-être que ca fait les choses différemment, où je peux le trouver ?
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."
> En revanche, j'accède aux membres de l'objet par des propriétés (je ne savais
même pas qu'on pouvait faire autrement, j'utilise l'assistant qui crée les
datasources à partir d'un objet), je ne sais pas si ça a une importance.
J'ai l'impression que c'est ce que je fais, j'accède aux membres de
l'objet par des propriétés (en vrai, mais c'est plus simple dans un
exemple aussi bateau de dire que tous les membres sont public).
Par contre je ne connais pas cet assistant qui crée les datasources à
partir d'un objet, peut-être que ca fait les choses différemment, où je
peux le trouver ?
Merci et A+
Pierre
--
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."
> En revanche, j'accède aux membres de l'objet par des propriétés (je ne savais même pas qu'on pouvait faire autrement, j'utilise l'assistant qui crée les datasources à partir d'un objet), je ne sais pas si ça a une importance.
J'ai l'impression que c'est ce que je fais, j'accède aux membres de l'objet par des propriétés (en vrai, mais c'est plus simple dans un exemple aussi bateau de dire que tous les membres sont public).
Par contre je ne connais pas cet assistant qui crée les datasources à partir d'un objet, peut-être que ca fait les choses différemment, où je peux le trouver ?
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."
ftrl
Pierre Y. a écrit :
Par contre je ne connais pas cet assistant qui crée les datasources à partir d'un objet, peut-être que ca fait les choses différemment, où je peux le trouver ?
C'est avec 2005 (j'aurais dû préciser). Menu Data, commande Add new Data Source... puis tu choisis Object.
Jean
Pierre Y. a écrit :
Par contre je ne connais pas cet assistant qui crée les datasources à
partir d'un objet, peut-être que ca fait les choses différemment, où je
peux le trouver ?
C'est avec 2005 (j'aurais dû préciser).
Menu Data, commande Add new Data Source... puis tu choisis Object.
Par contre je ne connais pas cet assistant qui crée les datasources à partir d'un objet, peut-être que ca fait les choses différemment, où je peux le trouver ?
C'est avec 2005 (j'aurais dû préciser). Menu Data, commande Add new Data Source... puis tu choisis Object.
Jean
Pierre Y.
ftrl a écrit :
Pierre Y. a écrit :
Par contre je ne connais pas cet assistant qui crée les datasources à partir d'un objet, peut-être que ca fait les choses différemment, où je peux le trouver ?
C'est avec 2005 (j'aurais dû préciser). Menu Data, commande Add new Data Source... puis tu choisis Object.
OK, j'ai trouvé, mais ca ne fait rien du tout à par me génerer un fichier XML, quand j'essaye ensuite d'utiliser cette Datasource, je ne vois aucun membre de mon objet auquel me lier. Il y a quelque chose de particulier à faire ?
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."
ftrl a écrit :
Pierre Y. a écrit :
Par contre je ne connais pas cet assistant qui crée les datasources à
partir d'un objet, peut-être que ca fait les choses différemment, où je
peux le trouver ?
C'est avec 2005 (j'aurais dû préciser).
Menu Data, commande Add new Data Source... puis tu choisis Object.
OK, j'ai trouvé, mais ca ne fait rien du tout à par me génerer un
fichier XML, quand j'essaye ensuite d'utiliser cette Datasource, je ne
vois aucun membre de mon objet auquel me lier. Il y a quelque chose de
particulier à faire ?
Merci ;-)
A+
Pierre
--
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."
Par contre je ne connais pas cet assistant qui crée les datasources à partir d'un objet, peut-être que ca fait les choses différemment, où je peux le trouver ?
C'est avec 2005 (j'aurais dû préciser). Menu Data, commande Add new Data Source... puis tu choisis Object.
OK, j'ai trouvé, mais ca ne fait rien du tout à par me génerer un fichier XML, quand j'essaye ensuite d'utiliser cette Datasource, je ne vois aucun membre de mon objet auquel me lier. Il y a quelque chose de particulier à faire ?
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."
ftrl
Pierre Y. a écrit :
OK, j'ai trouvé, mais ca ne fait rien du tout à par me génerer un fichier XML, quand j'essaye ensuite d'utiliser cette Datasource, je ne vois aucun membre de mon objet auquel me lier. Il y a quelque chose de particulier à faire ?
Ben non. Tu ajoute un binding source à ta form ou même mieux, tu peux faire drag and drop des champs du data source (en choisissant le type de champ, label, edit, etc.) vers la form.
Et comme je te disais, il me montre tous les membres publics qui sont des propriétés.
Jean
Pierre Y. a écrit :
OK, j'ai trouvé, mais ca ne fait rien du tout à par me génerer un
fichier XML, quand j'essaye ensuite d'utiliser cette Datasource, je ne
vois aucun membre de mon objet auquel me lier. Il y a quelque chose de
particulier à faire ?
Ben non. Tu ajoute un binding source à ta form ou même mieux, tu peux
faire drag and drop des champs du data source (en choisissant le type de
champ, label, edit, etc.) vers la form.
Et comme je te disais, il me montre tous les membres publics qui sont
des propriétés.
OK, j'ai trouvé, mais ca ne fait rien du tout à par me génerer un fichier XML, quand j'essaye ensuite d'utiliser cette Datasource, je ne vois aucun membre de mon objet auquel me lier. Il y a quelque chose de particulier à faire ?
Ben non. Tu ajoute un binding source à ta form ou même mieux, tu peux faire drag and drop des champs du data source (en choisissant le type de champ, label, edit, etc.) vers la form.
Et comme je te disais, il me montre tous les membres publics qui sont des propriétés.
Jean
Pierre Y.
> Et comme je te disais, il me montre tous les membres publics qui sont des propriétés.
Ouaip, c'était là le problème, j'avais laissé mes membres publics tel quels. Avec des propriétés c'est mieux ;-)
Et effectivement, le Label est rafraîchi correctement... Est-ce que ca vient de .NET 2.0 dont le fonctionnement des DataBindings aurait été amélioré ou j'ai loupé un truc dans mon implémentation avec le 1.1 ?
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."
> Et comme je te disais, il me montre tous les membres publics qui sont des
propriétés.
Ouaip, c'était là le problème, j'avais laissé mes membres publics tel
quels. Avec des propriétés c'est mieux ;-)
Et effectivement, le Label est rafraîchi correctement... Est-ce que ca
vient de .NET 2.0 dont le fonctionnement des DataBindings aurait été
amélioré ou j'ai loupé un truc dans mon implémentation avec le 1.1 ?
Merci encore, A+
Pierre
--
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."
> Et comme je te disais, il me montre tous les membres publics qui sont des propriétés.
Ouaip, c'était là le problème, j'avais laissé mes membres publics tel quels. Avec des propriétés c'est mieux ;-)
Et effectivement, le Label est rafraîchi correctement... Est-ce que ca vient de .NET 2.0 dont le fonctionnement des DataBindings aurait été amélioré ou j'ai loupé un truc dans mon implémentation avec le 1.1 ?
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."