begin process at 2010 03 21 02:04:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Windows

 > 

Formulaire / Winforms / Controls

 > 

Controle utilisateur


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

Controle utilisateur

mardi 21 octobre 2008 à 00:03:05 | Controle utilisateur

alligo

Bonjour a tous

j'ai créé un controle utilisateur (controle 1) (herité d'un bouton dont j'ai changé la forme). comme j'ai besoin d'enormement de ces controles, j'ai fait un autre controle utilisateur (controle 2) qui les regroupe tous.

dans le controle 2 je genere dynamiquement dans un tableau mes controles 1.

Je crée donc une form qui contient le controle 2. les controles 1 s'affichent corretement, et les evenements des controles 1 sont bien pris en charge

quand je clique sur un des controles 1 je declenche l'evenement surchargé de controle 1 mais le probleme est que dans la form qui utilise le controle 2 (et donc les controles 1) je voudrais recuperer l'index de mon tableau de controle pour savoir sur quel controle 1 j'ai cliqué

et je ne vois pas du tout comment faire

un peu d'aide ?

Merci
mardi 21 octobre 2008 à 00:22:41 | Re : Controle utilisateur

gillardg

Bonjour,

dans ton contrôle 2 tu as accès a cet index ??
alors il te suffit de créer une propriété avec cet index

a+
mardi 21 octobre 2008 à 01:09:04 | Re : Controle utilisateur

PCPT

Administrateur CodeS-SourceS
salut,
en effet c'est à controle2 de remonter l'évènement vers son conteneur, avec l'index de ta collection en argument/paramètre

++

Prenez un instant pour répondre à ce sondage svp
mardi 21 octobre 2008 à 10:44:19 | Re : Controle utilisateur

alligo

Oui d'accord, c'est un peu ce que j'avais deja fait mais ...

voici la portion de code pour la declaration du tableau :

[code]
        For i = 0 To 10
            myarray(i) = New Controls_Test.RoundButton(i)
            myarray(i).Visible = True
            Me.coord0 += Me.shiftl
            myarray(i).Location = Me.coord0
            Me.Controls.Add(myarray(i))
        Next
[/code]

Je n'arrive pas a comprendre quel evenement est levé quand je clique sur des controles de mon tableau.

un truc du style myarray(i)_click ... mais je ne peux pas utiliser de i dans la declaration de variable.

une deuxieme solution serait de regarder quelle proprieté a changé dans mon tableau en les regardant les controles un par un ... mais je trouve ca moyen et le refresh ne fonctionne pas ex =

[code]        For i = 0 To 10
            If myarray(i).isHighlighted = True Then
                lala = myarray(i).Numero 'lala est une propriete de ma classe
                Exit For
            End If
        Next
[/code]

et encore je ne sais pas sur quel evenement de controle2 mettre cette portion de code car ne fonctionne pas sur click


mardi 21 octobre 2008 à 12:57:47 | Re : Controle utilisateur

PCPT

Administrateur CodeS-SourceS
aucun rapport avec ta question de départ donc, ou alors je n'ai pas compris....

c'est "sender" qui doit te renvoyé les informations du bouton cliqué

voir les sources existantes pour savoir comment gérer les évènements sur des contrôles dynamiques
seulement une fois chose faite, tu pourras t'occuper du parent (controle2)

++

Prenez un instant pour répondre à ce sondage svp
mardi 21 octobre 2008 à 14:06:54 | Re : Controle utilisateur

alligo

Réponse acceptée !

Voila j'ai trouvé

je trouve ca un peu tiré par les cheveux mais ca marche ...

dans controle2 j'utilise la methode load pour charger mes controles1 et j'abonne mon controle2 a chaque evenement click de controle1 ...

dans la methode abonnée de controle2 je ets a jour une propriete de on controle2 avec l'index de controle1 a l'aide du sender et je lance un evenement ici onclick() mais ca pourrait etre n'importe lequel qui est surchargé et se charge de rendre dispo a la form mon index

code de control2 :

    Private Sub GroupedControl_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim i As Integer
        For i = 0 To 10
            myarray(i) = New Controls_Test.RoundButton(i)
            myarray(i).Visible = True
            Me.coord0 += Me.shiftl
            myarray(i).Location = Me.coord0
            myarray(i).Numero = i
            Me.Controls.Add(myarray(i))
            AddHandler myarray(i).Click, AddressOf myarray_click
        Next
        Me.Refresh()
    End Sub

    Private Sub myarray_click(ByVal sender As System.Object, ByVal e As System.EventArgs)

        Me.lala = sender.numero
        Me.OnClick(e)

    End Sub

pfiou c'etait pas simple ca je trouve ...

merci pour l'aide et merci d'avance pour les correrctions a faire si il y en a ...
mardi 21 octobre 2008 à 14:46:28 | Re : Controle utilisateur

gillardg

Bonjour,

normalement tes control1 ont bien un evenement click??
si oui il suffit de tous les gerer dans une sub
sub MesControls1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)handles ctrr1.click ; ctr2.click ' et ainsi de suite
MyCtrIndex=sender.numero

End Sub

je ne sais pas si mon explication est claire pour toi mais voici un exemple avec des boutons

Public indexCtrl1 As UInt16

Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click

Dim sa As Integer = sender.name.ToString.Length

indexCtrl1 =

CStr (sender.Name).Substring(sa - 1)

MsgBox(indexCtrl1)

End Sub
 
a+
mardi 21 octobre 2008 à 15:54:48 | Re : Controle utilisateur

alligo

Ta solution est interessante mais ... je peux avoir jusqu'a 400 controles ... dans ce cas je perds tout avantage de la prog si je dois taper a la main le nom de mes 400 controles?

ou n'ai pas compris qqch ?
mardi 21 octobre 2008 à 16:13:40 | Re : Controle utilisateur

PCPT

Administrateur CodeS-SourceS
gillardg -> je ne comprends pas non plus l'intérêt de ta réponse, il est sujet de contrôles chargés dynamiquement

j'ai peut-être mal compris ta réponse?
mardi 21 octobre 2008 à 17:01:11 | Re : Controle utilisateur

gillardg

Bonjour,

si chargé dynamitement alors je suis à coté de mes pompes , sorry

a+


Cette discussion est classée dans : controles, form, tableau, controle, utilisateur


Répondre à ce message

Sujets en rapport avec ce message

URGENT MERCI : Changer le parent d'un controle [ par marc ] Je souhaite faire une form principale avec une arborescence d'un coté et des controles de l'autre. Chaque fois que je clique sur un noeud, je veux aff controles multiples [ par mastercatz ] J'aimerais savoir comment faire pour créer plusieurs occurences d'un controle utilisateur, sachant que le nombre de controles à afficher est determiné VB.NET Controle utilisateur Type Form [ par COlive ] Bonjour,je cherche le moyen de créer un controle utilisateur qui n'a pas d'interface à la création (Comme le timer pas exemple) mais qui possede une m Limite de controle sur une form !!! heeeelp [ par Yaume1 ] Bonjour tout le monde, j'ai encore un problème (mais un costaud là) !!! lol j'ai atteint la limite des 100 contrôles (à priori) que l'on peut mettre s controle utilisateur [ par bousfiha ] bonjour et merci de lire ma question. mon problème est le suivant: j'ajouté à mon projet des controles d'utilisateur ("mui windows" si jamais vous les Controles dynamiques dans un controle/form avec gestion des scrollbars : suis paumé [ par yohan_titi ] Bonjour à tous,Je génère dynamiquement des controles (disons commanbutton). Pour ça no pb, j'arrive également à les aligner 10 par 10 verticalement.Là controle de multiple textbox !? [ par jimmy69 ] Bonjour,J'utilises vb net avec visual studio 2003 et je fais du win form depuis peu !Sur ma form principale j'ai plusisuers textbox qui sont controles controle utilisateur.....probleme [ par ecranbleu27 ] bjrje me sers d'un usercontrol  comme barre de naviguation sur mes form,son nom : navig11 , il regroupe un ensemble de boutons de controles pour navig


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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,312 sec (3)

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