ghost_of_prog
Messages postés31Date d'inscriptionjeudi 18 mai 2006StatutMembreDernière intervention 9 juin 2009
-
12 avril 2007 à 13:13
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024
-
2 mai 2007 à 11:20
Bonjour a tous,
voici mon probleme :
j'ai crée un panel principal dans lequel j' ajoute un autre panel qui contient une checkbox,
ce dernier panel peut etre ajouter dans le panel principal par un bouton "ajouter" et cela sans limite avec cette meme checkbox :
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024159 13 avril 2007 à 13:02
Bonjour
Je te propose un code rapide :
'Recherche parmi les panels sur la form (Me) les panel contenant la checkbox passée en paramètre.
Public Function GetPanel(ByVal pCheck As CheckBox) As Panel
For Each lControl As Control In Me.control
If TypeOf lControl Is Panel Then
For Each lCheck As Control In lControl.Controls
If TypeOf lCheck Is CheckBox AndAlso pCheck Is lCheck Then
Return DirectCast(lControl,Panel)
End If
Next
End If
Next
Return Nothing
End Function
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 12 avril 2007 à 13:21
sender te renvoie l'objet à l'origine du déclenchement de l'évènement.
Cet objet comporte entre-autre un nom (Name) que tu as toi même renseigné lors de la création.
Ce nom identifiera l'objet et par extention le panel concerné.
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
ghost_of_prog
Messages postés31Date d'inscriptionjeudi 18 mai 2006StatutMembreDernière intervention 9 juin 20092 13 avril 2007 à 12:52
merci NHenry mais le probleme c'est que j'ai un nombre indeterminé de checkbox et que celle-ci ont toutes le meme nom "checkbox1" (un traitement est effectuer sur la checkbox1 de chaque panel) :
panel_principale <= panel1 <=checkbox1
<=panel2 <=checkbox1
<=panel3 <=checkbox1
<=..... <=checkbox1
Finalement j'ai modifier mon code pour contourner le probleme, mais si quelqu'un a une solution je suis toujours prenneur.
ghost_of_prog
Messages postés31Date d'inscriptionjeudi 18 mai 2006StatutMembreDernière intervention 9 juin 20092 13 avril 2007 à 14:56
j'ai testé ton code, et ca semble etre ce que je recherche, mais je ne sais pas comment passer la checkbox en parametre car le probleme reste le meme, c'est a dire que je ne sais pas identifier la checkbox.
donc voici ce ke j'ai fais :
Public
Function GetPanel(
ByVal name_check
As
String)
As Panel
For
Each lControl
As Control
In attribut_panel_general.Controls
If
TypeOf lControl
Is Panel
Then
For
Each lCheck
As Control
In lControl.Controls
If
TypeOf lCheck
Is CheckBox
AndAlso name_check
Is lCheck.Name
The
If lCheck.ToString = "System.Windows.Forms.CheckBox, CheckState: 1" Then
If lControl.Controls.Item(lControl.Controls.Count - 1).Name = "table" Then
lControl.Controls.Item(lControl.Controls.Count - 1).Visible = True
Else
lControl.Controls.Add(ajouter_menu_table(630, "table", lestables))
End If
Else
lControl.Controls.Item(lControl.Controls.Count - 1).Visible = False
End If
EndIf
End
If
Next
End
If
Next
Return
Nothing
EndFunction
'Gestionnaire d'événements
Sub checked_FK(ByVal sender AsObject, ByVal e As System.EventArgs)
GetPanel(sender.name) //(ici sender.name = checkbox1)
EndSub
mais si t'as mieux que :
If lCheck.ToString = "System.Windows.Forms.CheckBox, CheckState: 1" Then
je suis preneur, parceque ca c'est du bidouillage, voir meme pour le reste.
ghost_of_prog
Messages postés31Date d'inscriptionjeudi 18 mai 2006StatutMembreDernière intervention 9 juin 20092 13 avril 2007 à 15:08
desolé juste une petit modification de ce que j'ai fait plus haut:
If
lCheck.ToString = "System.Windows.Forms.CheckBox, CheckState: 1"
Then
If lControl.Controls.Item(lControl.Controls.Count - 1).Name = "table"
Then
lControl.Controls.Item(lControl.Controls.Count - 1).Visible =
True
Else
lControl.Controls.Add(ajouter_menu_table(630, "table", lestables))
End
If
End
If
If lCheck.ToString = "System.Windows.Forms.CheckBox, CheckState: 0"
Then
If lControl.Controls.Item(lControl.Controls.Count - 1).Name = "table"
Then
lControl.Controls.Item(lControl.Controls.Count - 1).Visible =
False
End
If
End
If
je suis a l'ecoute de toutes propositions pour améliorer ce code.
Merci
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024159 2 mai 2007 à 11:20
Bonjour
Désolé pour le message précédent, saccade de navigateur.
Je te propose une modification (les lignes avec commentaire, code basé sur ton message du 13/04 à 16h56)
Public Function GetPanel(ByVal name_check AsString) As Panel
For Each lControl As Control In attribut_panel_general.Controls
If TypeOf lControl Is Panel Then
For Each lCheck As Control In lControl.Controls
If TypeOf lCheck Is CheckBox AndAlso name_check = lCheck.Name Then 'Ici un = à la place du Is
If DirectCast(lCheck,CheckBox).Checked Then 'Ici elevement du ToString
If lControl.Controls.Item(lControl.Controls.Count - 1).Name = "table" Then
lControl.Controls.Item(lControl.Controls.Count - 1).Visible = True
Else
lControl.Controls.Add(ajouter_menu_table(630, "table", lestables))
End If
Else
lControl.Controls.Item(lControl.Controls.Count - 1).Visible = False
End If
End If
End If
Next
EndIf
Next
Return Nothing
End Function, ----
(Coloration syntaxique automatique par Kenji)
Il est plus facile de batiser quelqu'un que de le convertir.(surtout en programmation)
VB (6, .NET1&2), C++, C#.Net1
Mon site