Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Classe BindingNavigator personnalisée

9 réponses
Avatar
SL3News
Bonjour,
Je n'arrive pas à gérer convenablement une classe binding navigator
personnalisée. En effet les items supplémentaires (boutons, séparateurs,
etc.) que j'ajoute ne s'affichent dans les formulaires utilisant cette
classe dérivée.
Merci d'avance.

9 réponses

Avatar
Gilles TOURREAU
Le Fri, 31 Aug 2007 21:16:00 +0200, SL3News a écrit:

Bonjour,
Je n'arrive pas à gérer convenablement une classe binding navigator
personnalisée. En effet les items supplémentaires (boutons, séparateurs,
etc.) que j'ajoute ne s'affichent dans les formulaires utilisant cette
classe dérivée.
Merci d'avance.





Pouvez-vous montrez le code qui ajoute les boutons ?

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
SL3News
Bonjour,
Merci à M. Gilles TOURREAU pour ses nombresues réponses pertinentes.
En fait je n'ajoute pas les boutons par programmation.
J'utilise plutôt l'interface graphique. Voici à peu près la procédure
utilisée :

- Création d'une solution : Masolution1
- Click droit sur Masolution puis Ajout d'une classe : Maclass1
- Click droit sur le projet Maclass1 puis Ajout d'un Controle Utilisateur :
MonBindingNavigator
- Click droit sur le conteneur, Afficher le code : remplacer UserControl par
BindingNavigator
- Ajout du controle BindingNavigator à la classe MonBindingNavigator : deux
objets sont disponibles BindingNavigator1 et MonBindingNavigator
- Click droit sur MonBindingNavigator1 puis Propriétés, puis Collection
d'items puis ajout de nouveau bouton à la collection d'items
- Générer le projet Maclass1
- Ajout du controle personnalisé MonBindingNavigator dans un form d'un
projet quelconque : conséquence, les boutons supplémentaires ne sont pas
visibles, seuls les boutons standards de la barre d'outils BindingNavigator
sont disponibles.

Que puis-je faire dans ce cas?
Sinon qu'elle était la bonne procédure à suivre pour créer mon controle
personnalisé MonBindingNavigator?

Merci d'avance.

"Gilles TOURREAU" a écrit dans le message de news:

Le Fri, 31 Aug 2007 21:16:00 +0200, SL3News a écrit:

Bonjour,
Je n'arrive pas à gérer convenablement une classe binding navigator
personnalisée. En effet les items supplémentaires (boutons, séparateurs,
etc.) que j'ajoute ne s'affichent dans les formulaires utilisant cette
classe dérivée.
Merci d'avance.





Pouvez-vous montrez le code qui ajoute les boutons ?

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr


Avatar
Gilles TOURREAU
Le Sun, 02 Sep 2007 16:03:52 +0200, SL3News a écrit:

Bonjour,
Merci à M. Gilles TOURREAU pour ses nombresues réponses pertinentes.
En fait je n'ajoute pas les boutons par programmation.
J'utilise plutôt l'interface graphique. Voici à peu près la procédure
utilisée :

- Création d'une solution : Masolution1
- Click droit sur Masolution puis Ajout d'une classe : Maclass1
- Click droit sur le projet Maclass1 puis Ajout d'un Controle
Utilisateur :
MonBindingNavigator
- Click droit sur le conteneur, Afficher le code : remplacer UserControl
par
BindingNavigator
- Ajout du controle BindingNavigator à la classe MonBindingNavigator :
deux
objets sont disponibles BindingNavigator1 et MonBindingNavigator



NON ! Vous encapsulez un BindingNavigator dans un autre BindingNavigator...

- Click droit sur MonBindingNavigator1 puis Propriétés, puis Collection
d'items puis ajout de nouveau bouton à la collection d'items



Vous modifiez donc les propriétés du BindingNavigator1 qui est inclus dans
MonBindingNavigator...
Vous ne touchez en aucun cas les propriétés de MonBindingNavigator

- Générer le projet Maclass1
- Ajout du controle personnalisé MonBindingNavigator dans un form d'un
projet quelconque : conséquence, les boutons supplémentaires ne sont pas
visibles, seuls les boutons standards de la barre d'outils
BindingNavigator
sont disponibles.

Que puis-je faire dans ce cas?
Sinon qu'elle était la bonne procédure à suivre pour créer mon controle
personnalisé MonBindingNavigator?



Bon choix ! Vous factorisez du code... Maintenance facile et contrôle des
vos projets plus facile ! Mais vous le faites mal... :-(

Supprimez votre BindingNavigator1 inclues dans MonBindingNavigator, dans
le Designer de VS vous devez avoir une page toute grise (où il y avait
votre bindingNavigator1 précédement), cliquez sur cette page grise et
allez dans les propriétés... Editez les propriétés que vous souhaitez...
Toutes les propriétés que vous modifiez dans ce cas seront propre à
MonBindingNavigator...

Cordialement


Merci d'avance.






"Gilles TOURREAU" a écrit dans le message de
news:

Le Fri, 31 Aug 2007 21:16:00 +0200, SL3News a écrit:

Bonjour,
Je n'arrive pas à gérer convenablement une classe binding navigator
personnalisée. En effet les items supplémentaires (boutons,
séparateurs,
etc.) que j'ajoute ne s'affichent dans les formulaires utilisant cette
classe dérivée.
Merci d'avance.





Pouvez-vous montrez le code qui ajoute les boutons ?

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr









--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
SL3News
Bonjour,
Je n'arrive pas à créer correctement une classe BindingNavigator
personnalisée.
Voici in texto ce que dit l'aide de MSDN à ce sujet :
"Tous les constructeurs de BindingNavigator appellent la méthode
AddStandardItems pour associer le jeu standard de contrôles de l'interface
utilisateur à la barre d'outils de navigation. Utilisez une des techniques
suivantes pour personnaliser cette barre d'outils :

Solution 1 : Créez BindingNavigator avec le constructeur
BindingNavigator(Boolean) qui accepte un paramètre addStandardItems Boolean
et affecte la valeur false à ce paramètre. Ajoutez ensuite les objets
ToolStripItem souhaités à la collection Items.

Solution 2 : Si vous souhaitez personnaliser un grand nombre de fonctions,
ou si le design personnalisé est réutilisé, dérivez une classe de
BindingNavigator et substituez la méthode AddStandardItems pour définir des
éléments standard supplémentaires ou alternatifs."

Je n'arrive pas à implémenter ni la solution 1 (comment utiliser le
constructeur BindingNavigator(Boolean)?) ni la solution 2 (comment
substituer la méthode AddStandardItems?).

Merci d'avance pour vos contributions.
A+
Avatar
Gilles TOURREAU
Le Tue, 04 Sep 2007 12:24:07 +0200, SL3News a écrit:

Bonjour,
Je n'arrive pas à créer correctement une classe BindingNavigator
personnalisée.
Voici in texto ce que dit l'aide de MSDN à ce sujet :
"Tous les constructeurs de BindingNavigator appellent la méthode
AddStandardItems pour associer le jeu standard de contrôles de
l'interface
utilisateur à la barre d'outils de navigation. Utilisez une des
techniques
suivantes pour personnaliser cette barre d'outils :

Solution 1 : Créez BindingNavigator avec le constructeur
BindingNavigator(Boolean) qui accepte un paramètre addStandardItems
Boolean
et affecte la valeur false à ce paramètre. Ajoutez ensuite les objets
ToolStripItem souhaités à la collection Items.

Solution 2 : Si vous souhaitez personnaliser un grand nombre de
fonctions,
ou si le design personnalisé est réutilisé, dérivez une classe de
BindingNavigator et substituez la méthode AddStandardItems pour définir
des
éléments standard supplémentaires ou alternatifs."

Je n'arrive pas à implémenter ni la solution 1 (comment utiliser le
constructeur BindingNavigator(Boolean)?) ni la solution 2 (comment
substituer la méthode AddStandardItems?).

Merci d'avance pour vos contributions.
A+




Soit vous faites ceci :

public BindingNavigator()
: base(false)
{
//Ajouter mes contrôles.
}

soit cela :

public override void AddStandardItems()
{
//Ajouter mes contrôles avant ceux de Microsoft
base.AddStandardItems();
//Ajouter mes contrôles après ceux de Microsoft
}

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
SL3News
"Gilles TOURREAU" a écrit dans le message de news:

Le Tue, 04 Sep 2007 12:24:07 +0200, SL3News a écrit:

Bonjour,
Je n'arrive pas à créer correctement une classe BindingNavigator
personnalisée.
Voici in texto ce que dit l'aide de MSDN à ce sujet :
"Tous les constructeurs de BindingNavigator appellent la méthode
AddStandardItems pour associer le jeu standard de contrôles de
l'interface
utilisateur à la barre d'outils de navigation. Utilisez une des
techniques
suivantes pour personnaliser cette barre d'outils :

Solution 1 : Créez BindingNavigator avec le constructeur
BindingNavigator(Boolean) qui accepte un paramètre addStandardItems
Boolean
et affecte la valeur false à ce paramètre. Ajoutez ensuite les objets
ToolStripItem souhaités à la collection Items.

Solution 2 : Si vous souhaitez personnaliser un grand nombre de
fonctions,
ou si le design personnalisé est réutilisé, dérivez une classe de
BindingNavigator et substituez la méthode AddStandardItems pour définir
des
éléments standard supplémentaires ou alternatifs."

Je n'arrive pas à implémenter ni la solution 1 (comment utiliser le
constructeur BindingNavigator(Boolean)?) ni la solution 2 (comment
substituer la méthode AddStandardItems?).

Merci d'avance pour vos contributions.
A+




Soit vous faites ceci :

public BindingNavigator()
: base(false)
{
//Ajouter mes contrôles.
}

soit cela :

public override void AddStandardItems()
{
//Ajouter mes contrôles avant ceux de Microsoft
base.AddStandardItems();
//Ajouter mes contrôles après ceux de Microsoft
}

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr



Merci pour l'aide,
J'ai utilisé la solution suivante (en fait je n'ajoute aucun élément de la
barre d'outils standards) :
public override void AddStandardItems()
{
//Ajouter mes contrôles avant ceux de Microsoft
//base.AddStandardItems();
//Ajouter mes contrôles après ceux de Microsoft
}

Ensuite, j'ajoute moi-même mes outils perso.
Je sui presque satisfait sauf que ...
A l'exécution d'un formulaire utilisant MonBindingNavigator perso, il
duplique tous les éléments de la barre d'outils. C'est tout comme s'il
exécutait deux fois AddStandardItems().
Merci d'avance pour vos contributions.
Avatar
Gilles TOURREAU
Le Wed, 05 Sep 2007 17:40:42 +0200, SL3News a écrit:


"Gilles TOURREAU" a écrit dans le message de
news:

Le Tue, 04 Sep 2007 12:24:07 +0200, SL3News a écrit:

Bonjour,
Je n'arrive pas à créer correctement une classe BindingNavigator
personnalisée.
Voici in texto ce que dit l'aide de MSDN à ce sujet :
"Tous les constructeurs de BindingNavigator appellent la méthode
AddStandardItems pour associer le jeu standard de contrôles de
l'interface
utilisateur à la barre d'outils de navigation. Utilisez une des
techniques
suivantes pour personnaliser cette barre d'outils :

Solution 1 : Créez BindingNavigator avec le constructeur
BindingNavigator(Boolean) qui accepte un paramètre addStandardItems
Boolean
et affecte la valeur false à ce paramètre. Ajoutez ensuite les objets
ToolStripItem souhaités à la collection Items.

Solution 2 : Si vous souhaitez personnaliser un grand nombre de
fonctions,
ou si le design personnalisé est réutilisé, dérivez une classe de
BindingNavigator et substituez la méthode AddStandardItems pour définir
des
éléments standard supplémentaires ou alternatifs."

Je n'arrive pas à implémenter ni la solution 1 (comment utiliser le
constructeur BindingNavigator(Boolean)?) ni la solution 2 (comment
substituer la méthode AddStandardItems?).

Merci d'avance pour vos contributions.
A+




Soit vous faites ceci :

public BindingNavigator()
: base(false)
{
//Ajouter mes contrôles.
}

soit cela :

public override void AddStandardItems()
{
//Ajouter mes contrôles avant ceux de Microsoft
base.AddStandardItems();
//Ajouter mes contrôles après ceux de Microsoft
}

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr



Merci pour l'aide,
J'ai utilisé la solution suivante (en fait je n'ajoute aucun élément de
la
barre d'outils standards) :
public override void AddStandardItems()
{
//Ajouter mes contrôles avant ceux de Microsoft
//base.AddStandardItems();
//Ajouter mes contrôles après ceux de Microsoft
}

Ensuite, j'ajoute moi-même mes outils perso.
Je sui presque satisfait sauf que ...
A l'exécution d'un formulaire utilisant MonBindingNavigator perso, il
duplique tous les éléments de la barre d'outils. C'est tout comme s'il
exécutait deux fois AddStandardItems().
Merci d'avance pour vos contributions.





Cette méthode est appellée une seule fois et uniquemenet si le paramètres
du constructeur est à true...
Avez vous essayé de voir ce que cela donne au niveau du débuggueur ?

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
SL3News
"Gilles TOURREAU" a écrit dans le message de news:

Le Wed, 05 Sep 2007 17:40:42 +0200, SL3News a écrit:


"Gilles TOURREAU" a écrit dans le message de
news:

Le Tue, 04 Sep 2007 12:24:07 +0200, SL3News a écrit:

Bonjour,
Je n'arrive pas à créer correctement une classe BindingNavigator
personnalisée.
Voici in texto ce que dit l'aide de MSDN à ce sujet :
"Tous les constructeurs de BindingNavigator appellent la méthode
AddStandardItems pour associer le jeu standard de contrôles de
l'interface
utilisateur à la barre d'outils de navigation. Utilisez une des
techniques
suivantes pour personnaliser cette barre d'outils :

Solution 1 : Créez BindingNavigator avec le constructeur
BindingNavigator(Boolean) qui accepte un paramètre addStandardItems
Boolean
et affecte la valeur false à ce paramètre. Ajoutez ensuite les objets
ToolStripItem souhaités à la collection Items.

Solution 2 : Si vous souhaitez personnaliser un grand nombre de
fonctions,
ou si le design personnalisé est réutilisé, dérivez une classe de
BindingNavigator et substituez la méthode AddStandardItems pour définir
des
éléments standard supplémentaires ou alternatifs."

Je n'arrive pas à implémenter ni la solution 1 (comment utiliser le
constructeur BindingNavigator(Boolean)?) ni la solution 2 (comment
substituer la méthode AddStandardItems?).

Merci d'avance pour vos contributions.
A+




Soit vous faites ceci :

public BindingNavigator()
: base(false)
{
//Ajouter mes contrôles.
}

soit cela :

public override void AddStandardItems()
{
//Ajouter mes contrôles avant ceux de Microsoft
base.AddStandardItems();
//Ajouter mes contrôles après ceux de Microsoft
}

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr



Merci pour l'aide,
J'ai utilisé la solution suivante (en fait je n'ajoute aucun élément de
la
barre d'outils standards) :
public override void AddStandardItems()
{
//Ajouter mes contrôles avant ceux de Microsoft
//base.AddStandardItems();
//Ajouter mes contrôles après ceux de Microsoft
}

Ensuite, j'ajoute moi-même mes outils perso.
Je sui presque satisfait sauf que ...
A l'exécution d'un formulaire utilisant MonBindingNavigator perso, il
duplique tous les éléments de la barre d'outils. C'est tout comme s'il
exécutait deux fois AddStandardItems().
Merci d'avance pour vos contributions.





Cette méthode est appellée une seule fois et uniquemenet si le paramètres
du constructeur est à true...
Avez vous essayé de voir ce que cela donne au niveau du débuggueur ?

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr



Bonjour,
Merci pour vos réponses.
Voici un extrait du code qui crée mon contrôle personnalisé. En résumé, je
surcharge la méthode AddStandardsItems() et j'ajoute moi même les éléments
dans la collection d'items.
Le constat que j'ai fait est que les boutons sont ajoutés lorsque je dépose
mon controle personnalisé dans un formulaire (ce qui est normal).
Par contre, les boutons de la classe MonBindingNavigator sont ajoutés une
seconde fois lorsque j'exécute le formulaire (Touche F5).
De sorte que en mode Design j'ai les boutons initiaux de la classe que je
peux personnaliser dans mon formulaire mais en mode Exécution, j'ai les
boutons personnalisés de mon form + tous les boutons de la classe
monBindingNavigator comme l'atteste le MessageBox que j'ai mis après le
InitializeComponent.

Par ailleurs, je ne comprend pas pourquoi lorsque je crée un controle
personnalisé en utilisant la classe BindingNavigator, je peux avoir accès
séparément aux boutons de cette classe lorsque le controle est ajouté dans
un formulaire alors que lorsque je crée ma classe personnalisée à partir de
ToolStrip et que j'y ajoute des boutons, ces boutons ne sont pas accessibles
en mode Design dans mon formulaire. Normalement, je devrais avoir un
comportement identique puisque la classe BindingNavigator utilise aussi
ToolStrip auquel elle ajoute des boutons.

Merci d'avance pour vos suggestions.

public partial class MonBindingNavigator : BindingNavigator

{

public MonBindingNavigator()

{

InitializeComponent();

MessageBox.Show("InitializeComponent s'exécute deux fois : n 1er : lorsque
le controle est déposé sur un formulaire en mode design. n 2nd : lorsque le
formulaire est exécuté (touche F5).");

}

public override void AddStandardItems()

{

//Ajouter mes contrôles avant ceux de Microsoft

//base.AddStandardItems();

//Ajouter mes contrôles après ceux de Microsoft

}

}
Avatar
Gilles TOURREAU
Le Sat, 08 Sep 2007 10:00:29 +0200, SL3News a écrit:


Bonjour,
Merci pour vos réponses.
Voici un extrait du code qui crée mon contrôle personnalisé. En résumé,
je
surcharge la méthode AddStandardsItems() et j'ajoute moi même les
éléments
dans la collection d'items.
Le constat que j'ai fait est que les boutons sont ajoutés lorsque je
dépose
mon controle personnalisé dans un formulaire (ce qui est normal).
Par contre, les boutons de la classe MonBindingNavigator sont ajoutés une
seconde fois lorsque j'exécute le formulaire (Touche F5).
De sorte que en mode Design j'ai les boutons initiaux de la classe que je
peux personnaliser dans mon formulaire mais en mode Exécution, j'ai les
boutons personnalisés de mon form + tous les boutons de la classe
monBindingNavigator comme l'atteste le MessageBox que j'ai mis après le
InitializeComponent.

Par ailleurs, je ne comprend pas pourquoi lorsque je crée un controle
personnalisé en utilisant la classe BindingNavigator, je peux avoir accès
séparément aux boutons de cette classe lorsque le controle est ajouté
dans
un formulaire alors que lorsque je crée ma classe personnalisée à partir
de
ToolStrip et que j'y ajoute des boutons, ces boutons ne sont pas
accessibles
en mode Design dans mon formulaire. Normalement, je devrais avoir un
comportement identique puisque la classe BindingNavigator utilise aussi
ToolStrip auquel elle ajoute des boutons.

Merci d'avance pour vos suggestions.

public partial class MonBindingNavigator : BindingNavigator

{

public MonBindingNavigator()

{

InitializeComponent();

MessageBox.Show("InitializeComponent s'exécute deux fois : n 1er :
lorsque
le controle est déposé sur un formulaire en mode design. n 2nd :
lorsque le
formulaire est exécuté (touche F5).");

}

public override void AddStandardItems()

{

//Ajouter mes contrôles avant ceux de Microsoft

//base.AddStandardItems();

//Ajouter mes contrôles après ceux de Microsoft

}

}





Placez InitializeComponent() dans AddStandardItems().
Vous devez ajouter vos contrôles dans AddStandardItems().

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr