begin process at 2010 02 10 04:17:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Windows

 > 

Formulaire / Winforms / Controls

 > 

iteration sur tout les controls d'une form


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

iteration sur tout les controls d'une form

dimanche 17 février 2008 à 00:04:10 | iteration sur tout les controls d'une form

surfzoid

Salut
Je suis face a un probleme de longue date, faire une boucle qui passe par TOUT les controles d'une form, j'en une qui marche bien si tout les control sont au même niveau mais prenons l'exemple d'une form avec 4 TableLayout, dans ces 4 Tables layout 2 boutons et 2 textbox, la boucle ne descent que dans le dernier tablelayout.

la boucle d'origine (copier depuis la doc MSDN et adapté par la suite):
PrivateSub ResetAllControlsBackColor(control As Control)
control.BackColor = SystemColors.Control
control.ForeColor = SystemColors.ControlText

' Recursively call this method for each child control.
Dim childControl As Control
ForEach childControl In control.Controls
Console.Writeline(childControl.Name)
ResetAllControlsBackColor(childControl)
Next childControl

EndSub
En fait c'est comme si il n'y avait qu'une seule "instance" de la boucle et que pendant l'execution de celle ci la valeur de "control" change avec le deuxieme appel!

dimanche 17 février 2008 à 00:18:18 | Re : iteration sur tout les controls d'une form

surfzoid

je vais faire du "monologue" mais j'apreci volontier un avis .
Une idée viens de germer, restera a la testé :

Dim OneLevelColl as new collection
PrivateSub ResetAllControlsBackColor(control As Control)
control.BackColor = SystemColors.Control
control.ForeColor = SystemColors.ControlText

' Recursively call this method for each child control.
Dim childControl As Control
ForEach childControl In control.Controls
Console.Writeline(childControl.Name)
OneLevelColl.add(Ctrl,Ctrl.Handle)
Next childControl
AllChilds()
EndSub
PrivateSub AllChilds()
OneLevelColl.Clear()
ForEach childControl In OneLevelColl
ResetAllControlsBackColor(childControl)
Next childControl

OneLevelColl.Clear()
EndSub


lundi 18 février 2008 à 09:28:45 | Re : iteration sur tout les controls d'une form

NHenry

Membre Club
Réponse acceptée !
Bonjour

Remarque :

PrivateSub AllChilds()
OneLevelColl.Clear()
ForEach childControl In OneLevelColl
ResetAllControlsBackColor(childControl)
Next childControl

OneLevelColl.Clear()
EndSub
Donc tu vide la collection avant de regarder ce qu'il y a dedans ????

J'aurais proposer un autre code, en utilisant la récursivité :

private sub Traite_Control(byval pControls as Controls)
    for each lCtrl  as Control in pControls
       traite_control(lctrl.controls)
       Action(lCtrl) 'là tu fait ce que tu veux avec le controle.
    next
end sub

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
mardi 19 février 2008 à 15:17:30 | Re : iteration sur tout les controls d'une form

surfzoid


Tu as raison, j ai ecrit ce post sous linux sans editeur de code et j'ai oublié d'enlever la premiere ligne qui vide la colection.
De plus entre temps je me suis apperçu d'un petit détail "vicieu", ce qui me laisser croire que dans ma boucle d'origine je ne passer pas en revut tout les ctrl, s'était des combo et label d'un ToolStrip, bête comme je suis, je m'était dit que c'était des controle auquel on rajouter just "toolstrip" devant le nom surtout que si on regard la liste des propriéte de "ToolStrip1" il y a bien "controls" (mais tjrs vide semble t il !)
Donc le truc vicieu du toolstrip c'est que tout ses ctrl ne sont pas des ctrl mais des Item de la collection d'item de ce dernier, rarghhhhhhh.
une boucle for each sur toute la collection d'item du toolstrip marche nickel.

Merci encore pour ton investissement.
@++


Cette discussion est classée dans : boucle, form, control, controls, childcontrol


Répondre à ce message

Sujets en rapport avec ce message

control de controls [ par buddy91600 ] BonjourFor Each c As Control In Me.Control Next me ramene tous les controles de "premier niveau" de ma form ME Mais si j'ai sur cette form des T Control dans Form [ par garstoff ] Hello,Je vous explique mon probleme.J'ai une form avec plusieurs controls(textbox, datetimepicker ...) et un tableau avec des valeurs.J'ai une boucle control ? feuille excel insérée dans form VB2005 express [ par vercomax ] bonjour,je ne trouve pas, malgré mes recherches, quel controle utiliser pour insérer une feuille excel dans une form vb2005emerci pour votre aide VB.NET - Lecture en boucle d'un fichier Flash dans un Form [ par Piloutech ] Bonjour a tous et, tout d'abord, merci a ceux qui prendrons le temps de lire ma question de débutant.Je me suis mis en tête de faire tourner en boucle JE SUIS PERDU [ par LUSTRUCRU ] Bonjour,Voici l'état des lieux :En VB6 :2 Form , un DataCombo par FeuilleUN SEUL control ADODC sur Form1Le problème :Datacombo1 (form1)dans sa proprié BackgroundWorker lancant une Form en VB.Net [ par moinarf ] Ne sachant pas tres bien ou le poster, je poste dans divers...Voici mon probléme :Sur ma form, j'ai fait un BackgroundWorker qui execute une boucle Wh question user control [ par ecranbleu27 ] bjrje voudrais me servir d'un user control (.ctl) sur plusieurs form d'un programme.ce usercontrol est en fait un panneau de commandes ( boutons: prem chargement des controls [ par nabilac ] salut,qlcun peut me dire comment faire pour charger +sieurs instances d'un meme control.exemple le contrrol "ComboBox"ce que j'ai fais:1- j'ai ramen u Problème de boucle DirectX ... [ par nico1610 ] Bonjour à tous,Voila à quoi resemble mon code : Public bRun as BooleanPrivate Sub<font face="Couri transparence d'un control sur un backgroundimage d'une form [ par Adn56 ] Re salut all,Comme dis dans le titre je n'arrive pas à faire en sorte qu'un control soit rendu transparent sur l'image d'arriére plan de la form ! Il


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales