OVH Cloud OVH Cloud

La galere de la ComboBox !!!!

3 réponses
Avatar
JFGerard
Bonjour a TouLeMonde ... et aux autres aussi !!

Je realise un petit developpement sous Vb.net dans l'environnement Pocket
(Mobile) (mais normalement cela n'influe pas).
J'ai une CB remplie via la propriété DataSource qui pointe vers une table
(remplie normalement dans une phase initiale par l'operateur).
Je voudrais que chaque fois que j'affiche la Frame contenant cette CB, la
dite CB ne memorise pas la valeur anterieurement selectionnée par
l'operateur, avec un SelectedIndex indefini (soit -1) et le "texte" de la CB
ne proposant rien.
Un moyen, un pleu lourd, consiste a redefinir la Datasource a chaque
affichage de la Frame conteneur. mais cela ne me semble pas geant.
Le second moyen trouve est de mettre la propriété SelectedIndex à -1.
Mais, ET là est la question, pour que la CB n'affiche rien, il faut executer
l'instruction de remise a -1 deux fois de suite. ..... Bizarre, bizarre ....
et si on ne le fait qu'une fois, la CB propose le premier element de la
table, avec un SelectedIndex a 0.
Si on ne touche pas a la CB, au coup suivant, on retrouve bien un
SelectedIndex a -1, mais aussi longtemps qu'on ouvre la liste deroulante, il
faudra deux coups après, pour ne rien avoir de predeterminé a l'affichage de
la Frame conteneur ....
Interessant, n'est-il pas ?
Je ne comprends vraiment pas le comportement.
Note : c'est du VS 2005 avec le CompactFramework 2.0.
Note : je ne gere aucun evenement sur la CB, je me contente après, de
recuperer la SelectedValue pour savoir ce que l'utilisateur a choisi (s'il a
choisi quelque chose).

Merci de vos avis eclairés.
JFG

3 réponses

Avatar
Stephane TUET
Bonjour

C'est un bug de la combobox microsoft :
http://support.microsoft.com/default.aspx?scid=kb;en-us;327244

Je pensais que MS aurait corrigé cela avec VS 2005, apparemment ceci ne
devait pas être assez important pour eux...


Steph



"JFGerard" a écrit dans le message de
news:
Bonjour a TouLeMonde ... et aux autres aussi !!

Je realise un petit developpement sous Vb.net dans l'environnement Pocket
(Mobile) (mais normalement cela n'influe pas).
J'ai une CB remplie via la propriété DataSource qui pointe vers une table
(remplie normalement dans une phase initiale par l'operateur).
Je voudrais que chaque fois que j'affiche la Frame contenant cette CB, la
dite CB ne memorise pas la valeur anterieurement selectionnée par
l'operateur, avec un SelectedIndex indefini (soit -1) et le "texte" de la
CB
ne proposant rien.
Un moyen, un pleu lourd, consiste a redefinir la Datasource a chaque
affichage de la Frame conteneur. mais cela ne me semble pas geant.
Le second moyen trouve est de mettre la propriété SelectedIndex à -1.
Mais, ET là est la question, pour que la CB n'affiche rien, il faut
executer
l'instruction de remise a -1 deux fois de suite. ..... Bizarre, bizarre
....
et si on ne le fait qu'une fois, la CB propose le premier element de la
table, avec un SelectedIndex a 0.
Si on ne touche pas a la CB, au coup suivant, on retrouve bien un
SelectedIndex a -1, mais aussi longtemps qu'on ouvre la liste deroulante,
il
faudra deux coups après, pour ne rien avoir de predeterminé a l'affichage
de
la Frame conteneur ....
Interessant, n'est-il pas ?
Je ne comprends vraiment pas le comportement.
Note : c'est du VS 2005 avec le CompactFramework 2.0.
Note : je ne gere aucun evenement sur la CB, je me contente après, de
recuperer la SelectedValue pour savoir ce que l'utilisateur a choisi (s'il
a
choisi quelque chose).

Merci de vos avis eclairés.
JFG


Avatar
JFGerard
Merci Steph

Il me semblait bien que dans le passé de VB j'avais deja galeré sur ce truc
mais comme toi, je n'osais imaginer que VS2005 avait encore des bugs de ce
niveau.

j'ai bien aimé les commentaires dans le fix que tu m'indiques :
Pour eviter le bug, n'utilisez pas le binding et remplissez la CB a la main
(par programme), autrement dit mettez 100 lignes de code a la place d'une et
consommez la ressource CPU a faire ce qu'on ne veut pas corriger.
Merci Bill !!!!!

donc merci - et bien sincerement -
JF


"Stephane TUET" a écrit :

Bonjour

C'est un bug de la combobox microsoft :
http://support.microsoft.com/default.aspx?scid=kb;en-us;327244

Je pensais que MS aurait corrigé cela avec VS 2005, apparemment ceci ne
devait pas être assez important pour eux...


Steph



"JFGerard" a écrit dans le message de
news:
> Bonjour a TouLeMonde ... et aux autres aussi !!
>
> Je realise un petit developpement sous Vb.net dans l'environnement Pocket
> (Mobile) (mais normalement cela n'influe pas).
> J'ai une CB remplie via la propriété DataSource qui pointe vers une table
> (remplie normalement dans une phase initiale par l'operateur).
> Je voudrais que chaque fois que j'affiche la Frame contenant cette CB, la
> dite CB ne memorise pas la valeur anterieurement selectionnée par
> l'operateur, avec un SelectedIndex indefini (soit -1) et le "texte" de la
> CB
> ne proposant rien.
> Un moyen, un pleu lourd, consiste a redefinir la Datasource a chaque
> affichage de la Frame conteneur. mais cela ne me semble pas geant.
> Le second moyen trouve est de mettre la propriété SelectedIndex à -1.
> Mais, ET là est la question, pour que la CB n'affiche rien, il faut
> executer
> l'instruction de remise a -1 deux fois de suite. ..... Bizarre, bizarre
> ....
> et si on ne le fait qu'une fois, la CB propose le premier element de la
> table, avec un SelectedIndex a 0.
> Si on ne touche pas a la CB, au coup suivant, on retrouve bien un
> SelectedIndex a -1, mais aussi longtemps qu'on ouvre la liste deroulante,
> il
> faudra deux coups après, pour ne rien avoir de predeterminé a l'affichage
> de
> la Frame conteneur ....
> Interessant, n'est-il pas ?
> Je ne comprends vraiment pas le comportement.
> Note : c'est du VS 2005 avec le CompactFramework 2.0.
> Note : je ne gere aucun evenement sur la CB, je me contente après, de
> recuperer la SelectedValue pour savoir ce que l'utilisateur a choisi (s'il
> a
> choisi quelque chose).
>
> Merci de vos avis eclairés.
> JFG





Avatar
Stephane TUET
Oui, chacun utilise sa petite bidouille j'imagine pour arriver à contourner
ce bug. La notre consiste à remplir la combo à la main en rajoutant un
élément vide à la première position puis de se positionner sur l'index 0.

J'ai du mal à imaginer que ce bug ne dérange qu'une minorité de gens tout de
même... Peut être que cela sera corrigé dans la prochaine version de VS :-D

Bonne continuation

Steph

"JFGerard" a écrit dans le message de
news:
Merci Steph

Il me semblait bien que dans le passé de VB j'avais deja galeré sur ce
truc
mais comme toi, je n'osais imaginer que VS2005 avait encore des bugs de ce
niveau.

j'ai bien aimé les commentaires dans le fix que tu m'indiques :
Pour eviter le bug, n'utilisez pas le binding et remplissez la CB a la
main
(par programme), autrement dit mettez 100 lignes de code a la place d'une
et
consommez la ressource CPU a faire ce qu'on ne veut pas corriger.
Merci Bill !!!!!

donc merci - et bien sincerement -
JF


"Stephane TUET" a écrit :

Bonjour

C'est un bug de la combobox microsoft :
http://support.microsoft.com/default.aspx?scid=kb;en-us;327244

Je pensais que MS aurait corrigé cela avec VS 2005, apparemment ceci ne
devait pas être assez important pour eux...


Steph



"JFGerard" a écrit dans le message
de
news:
> Bonjour a TouLeMonde ... et aux autres aussi !!
>
> Je realise un petit developpement sous Vb.net dans l'environnement
> Pocket
> (Mobile) (mais normalement cela n'influe pas).
> J'ai une CB remplie via la propriété DataSource qui pointe vers une
> table
> (remplie normalement dans une phase initiale par l'operateur).
> Je voudrais que chaque fois que j'affiche la Frame contenant cette CB,
> la
> dite CB ne memorise pas la valeur anterieurement selectionnée par
> l'operateur, avec un SelectedIndex indefini (soit -1) et le "texte" de
> la
> CB
> ne proposant rien.
> Un moyen, un pleu lourd, consiste a redefinir la Datasource a chaque
> affichage de la Frame conteneur. mais cela ne me semble pas geant.
> Le second moyen trouve est de mettre la propriété SelectedIndex à -1.
> Mais, ET là est la question, pour que la CB n'affiche rien, il faut
> executer
> l'instruction de remise a -1 deux fois de suite. ..... Bizarre, bizarre
> ....
> et si on ne le fait qu'une fois, la CB propose le premier element de la
> table, avec un SelectedIndex a 0.
> Si on ne touche pas a la CB, au coup suivant, on retrouve bien un
> SelectedIndex a -1, mais aussi longtemps qu'on ouvre la liste
> deroulante,
> il
> faudra deux coups après, pour ne rien avoir de predeterminé a
> l'affichage
> de
> la Frame conteneur ....
> Interessant, n'est-il pas ?
> Je ne comprends vraiment pas le comportement.
> Note : c'est du VS 2005 avec le CompactFramework 2.0.
> Note : je ne gere aucun evenement sur la CB, je me contente après, de
> recuperer la SelectedValue pour savoir ce que l'utilisateur a choisi
> (s'il
> a
> choisi quelque chose).
>
> Merci de vos avis eclairés.
> JFG