Création de boutons automatiques

Résolu
Moundir76 Messages postés 286 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014 - 4 janv. 2012 à 09:20
Moundir76 Messages postés 286 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014 - 10 janv. 2012 à 16:04
Bonjour et meilleurs voeux,

Je suis sur un projet pour l'école dans lequel je dois développer une application qui sera utilisée sur un écran tactile. Ainsi les contraintes sont très différentes puisqu'il faut que le programme soit très simple et rapide à utiliser avec ses doigts et non la souris.
Voici mon problème : J'ai une liste de 10 personnes, seulement sur ces 10 personnes, seulement 5 sont présentes le jour d'utilisation de mon application. Je voudrais que chaque personne qui soit présente puisse cliquer sur un bouton correspondant à son nom. Mais il est inutile d'afficher 10 boutons si seulement 5 personnes sont présentes. Je voudrais ainsi, avant l'arrivée des gens, sélectionner a l'aide de ma souris les gens qui sont présent et que des boutons soit créés et ajustés sur ma form. Les gens sont enregistrées dans une BDD.

Je ne sais pas si c'est possible, ni même comment enregistrer des infos derrière un bouton qui retiendrait par exemple l'id de la personne, et qu'il y ait du code derrière chaque bouton.

Suis je assez clair ? Est ce possible selon vous et avez vous des astuces qui pourraient m'aider car je n'ai aucune idée de comment faire.

Cordialement

39 réponses

cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 56
5 janv. 2012 à 21:21
tiens
tu peux choisir plusieurs non en cliquant sur
le nom voulu de la listbox

Public Class Form1
    Private WithEvents listboxname As New ListBox
    Private WithEvents buttonselect As New Button
    Private WithEvents buttonreturn As New Button
    Dim listname As New List(Of String)
    Dim panelbutton As New Panel
    Private listbutton As New List(Of Button)
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        initcontrols()
        FillListbox()
    End Sub
    Private Sub initcontrols()
        With listboxname
            .Font = New Font("arial", 12, FontStyle.Bold)
            .SelectionMode = SelectionMode.MultiSimple
            .Location = New Point(2, 2)
            .Width = 200
            .Height = 200
            .Sorted = True
        End With
        Me.Controls.Add(listboxname)
        With buttonselect
            .Font = New Font("arial", 12, FontStyle.Bold)
            .TextAlign = ContentAlignment.MiddleCenter
            .AutoSize = True
            .Text = "valider"
            .Location = New Point(listboxname.Left + (listboxname.Width - buttonselect.Width) \ 2, listboxname.Bottom + 2)
            .Enabled = False
        End With
        Me.Controls.Add(buttonselect)
        With buttonreturn
            .Font = New Font("arial", 12, FontStyle.Bold)
            .TextAlign = ContentAlignment.MiddleCenter
            .AutoSize = True
            .Text = "retour à la liste "
            .Enabled = True
            .Visible = False
        End With
        Me.Controls.Add(buttonreturn)
        With panelbutton
            .BackColor = Color.Linen
            .BorderStyle = BorderStyle.Fixed3D
        End With
        Me.Controls.Add(panelbutton)
    End Sub
    Private Sub FillListbox()
        For iter = 1 To 50
            listboxname.Items.Add("speedy gonzales" & iter.ToString)
        Next
    End Sub

    Private Sub listboxname_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles listboxname.SelectedIndexChanged
        If DirectCast(sender, ListBox).SelectedItems.Count > 0 Then
            'buttonselect.Visible = True
            buttonselect.Enabled = True
        Else
            buttonselect.Enabled = False
        End If
    End Sub

    Private Sub buttonselect_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles buttonselect.MouseClick
        listname.Clear()
        For Each item As String In listboxname.SelectedItems
            listname.Add(item)
        Next
        'remove all selected name 
        For iter = listboxname.SelectedItems.Count - 1 To 0 Step -1
            listboxname.Items.Remove(listboxname.SelectedItems(iter))
        Next
        DirectCast(sender, Button).Enabled = False
        DirectCast(sender, Button).Visible = False
        listboxname.Visible = False

        Createbuttons()
    End Sub
    Private Sub Createbuttons()
        listbutton.Clear()
       

        For Each name As String In listname
            Dim mybutton As New Button
            With mybutton
                .Font = New Font("arial", 14, FontStyle.Bold)
                .TextAlign = ContentAlignment.MiddleCenter
                .Text = name
                .BackColor = Color.PowderBlue
                .AutoSize = True
                AddHandler .MouseClick, AddressOf mouseclickbutton
            End With
            listbutton.Add(mybutton)
            panelbutton.Controls.Add(mybutton)
        Next
         PlaceButtons()
    End Sub
    Private Sub PlaceButtons()
        Dim positionx As Integer
        Dim positiony As Integer
        Dim space As Integer
        Dim iter As Integer
        Dim maxwith, maxheight As Integer
        space = 4
        positionx = 6
        positiony = 6
        maxwith = 0
        maxheight = 0
       
        iter = 0
        For Each ctrl In panelbutton.Controls
            If TypeOf ctrl Is Button Then
                If (iter Mod 5 = 0) And iter <> 0 Then
                    positionx = 6
                    positiony += DirectCast(ctrl, Button).Height + space
                End If
                DirectCast(ctrl, Button).Location = New Point(positionx, positiony)
                positionx += DirectCast(ctrl, Button).Width + space
                iter += 1
                If DirectCast(ctrl, Button).Width > maxwith Then
                    maxwith = DirectCast(ctrl, Button).Width
                End If
                If DirectCast(ctrl, Button).Height > maxheight Then
                    maxheight = DirectCast(ctrl, Button).Height
                End If
            End If
        Next
        panelbutton.Width = maxwith * 5 + 7 * space
        panelbutton.Height = maxheight * 10 + 12 * space
        panelbutton.Left = Me.Width \ 2 - Me.panelbutton.Width \ 2
        panelbutton.Top = Me.Height \ 2 - Me.panelbutton.Height \ 2
        buttonreturn.Location = New Point(2, 2)
        If listboxname.Items.Count > 0 Then
            buttonreturn.Visible = True
        End If
        panelbutton.Visible = True
    End Sub
    Private Sub mouseclickbutton(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        MessageBox.Show("tu as cliqué:" & DirectCast(sender, Button).Text)
    End Sub

    Private Sub buttonreturn_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles buttonreturn.MouseClick
        DirectCast(sender, Button).Visible = False
        panelbutton.Visible = False
        buttonselect.Visible = True

        listboxname.Visible = True
    End Sub
End Class
3
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 56
6 janv. 2012 à 13:32
quelques corrections
le listbutton ne sert pas dans le code
donc on peut supprimer les lignes suivantes
Private listbutton As New List(Of Button)
listbutton.Clear()
listbutton.Add(mybutton)


pour l'emplacement des boutons
d'abord il y a des controls container
c.a.d des controls qui peuvent contenir des
autres controls le plus grand container est
le form il contient tous les controls que tu places
c'est mieux de placer tous les controls qui ont
un point commun dans un control container comme
panel groupbox
ici j'ai des boutons qui ont un point commun
donc je les places dans un panel
comme j'ai 50 boutons je place 5 par rangée
et 10 rangé pour que ça fasse esthétique
de là le modulo 5 pour savoir quand placé
le bouton à la tete de la prochaine rangée
la largeur des boutons
la propriété autosize permet de fixer la taille
du bouton en fonction du text et du font
dans ce cas chaque bouton aura une taille différente
soi tu peux definir tous les boutons de la meme
taille mais dans ce cas il faut savoir quel est
le nom le plus long en pixel
donc c'est comme tu veux
dans le code je conserve la taille du plus grand bouton maxwith, maxheight
il faut placer 5 boutons
| ----- ----- ----- ----- ----- |
6 intervales
donc je me suis trompé dans le code
 panelbutton.Width = maxwith * 5 + 7 * space

plutot
panelbutton.Width = maxwith * 5 + 6 * space

pareil pour la hauteur du panel
si j'ai 10 rangé j'ai 11 intervales
donc je me suis trompé dans le code
 panelbutton.Height = maxheight * 10 + 12 * space

plutot
panelbutton.Height = maxheight * 10 + 11 * space

la sub corrigé
Private Sub PlaceButtons()
   Dim positionx As Integer
   Dim positiony As Integer
   Dim space As Integer
   Dim iter As Integer
   Dim maxwith, maxheight As Integer
    space = 4
    positionx = space
    positiony = space
    maxwith = 0
    maxheight = 0
    iter = 0
    For Each ctrl In panelbutton.Controls
       If TypeOf ctrl Is Button Then
          If (iter Mod 5 = 0) And iter <> 0 Then
             positionx = space
             positiony += DirectCast(ctrl, Button).Height + space
          End If
      DirectCast(ctrl, Button).Location = New Point(positionx, positiony)
      positionx += DirectCast(ctrl, Button).Width + space
                iter += 1
                If DirectCast(ctrl, Button).Width > maxwith Then
                    maxwith = DirectCast(ctrl, Button).Width
   End If
   If DirectCast(ctrl, Button).Height > maxheight Then
             maxheight = DirectCast(ctrl, Button).Height
      End If
 End If
  Next
        panelbutton.Width = maxwith * 5 + 6 * space
        panelbutton.Height = maxheight * 10 + 11 * space
        panelbutton.Left = Me.Width \ 2 - Me.panelbutton.Width \ 2
        panelbutton.Top = Me.Height \ 2 - Me.panelbutton.Height \ 2
        buttonreturn.Location = New Point(2, 2)
        If listboxname.Items.Count > 0 Then
            buttonreturn.Visible = True
        End If
        panelbutton.Visible = True
    End Sub


pour le directcast
dans ce cas on est pas obligé
Private Sub listboxname_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles listboxname.SelectedIndexChanged
        If DirectCast(sender, ListBox).SelectedItems.Count > 0 Then
            'buttonselect.Visible = True
            buttonselect.Enabled = True
        Else
            buttonselect.Enabled = False
        End If
    End Sub

on peut aussi
Private Sub listboxname_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles listboxname.SelectedIndexChanged
        If listboxname.SelectedItems.Count > 0 Then
            'buttonselect.Visible = True
            buttonselect.Enabled = True
        Else
            buttonselect.Enabled = False
        End If
    End Sub

mais la on est obligé
 For Each ctrl In panelbutton.Controls
            If TypeOf ctrl Is Button Then
                If (iter Mod 5 = 0) And iter <> 0 Then
                    positionx = space
                    positiony += DirectCast(ctrl, Button).Height + space
                End If
                DirectCast(ctrl, Button).Location = New Point(positionx, positiony)

il faut faire le casting du ctrl du type control en bouton
msdn
3
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 56
7 janv. 2012 à 22:54
je rectifie le code de façon
que tous les boutons ont la meme taille selon
le nom le plus large de la liste
Public Class Form1
    Private WithEvents listboxname As New ListBox
    Private WithEvents buttonselect As New Button
    Private WithEvents buttonreturn As New Button
    Dim listname As New List(Of String)
    Dim panelbutton As New Panel
    'la taille du plus grand bouton
    Dim maxsizebuton As New Size
    ' Private listbutton As New List(Of Button)
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        initcontrols()
        FillListbox()
        GetLargerButton()
    End Sub
    Private Sub initcontrols()
        With listboxname
            .Font = New Font("arial", 12, FontStyle.Bold)
            .SelectionMode = SelectionMode.MultiSimple
            .Location = New Point(2, 2)
            .Width = 200
            .Height = 200
            .Sorted = True
        End With
        Me.Controls.Add(listboxname)
        With buttonselect
            .Font = New Font("arial", 12, FontStyle.Bold)
            .TextAlign = ContentAlignment.MiddleCenter
            .AutoSize = True
            .Text = "valider"
            .Location = New Point(listboxname.Left + (listboxname.Width - buttonselect.Width) \ 2, listboxname.Bottom + 2)
            .Enabled = False
        End With
        Me.Controls.Add(buttonselect)
        With buttonreturn
            .Font = New Font("arial", 12, FontStyle.Bold)
            .TextAlign = ContentAlignment.MiddleCenter
            .AutoSize = True
            .Text = "retour à la liste "
            .Enabled = True
            .Visible = False
        End With
        Me.Controls.Add(buttonreturn)
        With panelbutton
            .BackColor = Color.Linen
            .BorderStyle = BorderStyle.Fixed3D
        End With
        Me.Controls.Add(panelbutton)
    End Sub
    Private Sub FillListbox()
        For iter = 1 To 50
            listboxname.Items.Add("BUTTON" & iter.ToString)
        Next
    End Sub
    Private Sub GetLargerButton()
        'fixe le maxsizebutton c.a.d le button le plus large et tous les boutons auront sa taille 
        Dim modelbutton As New Button
        modelbutton.Font = New Font("arial", 14, FontStyle.Bold)
        modelbutton.AutoSize = True
        maxsizebuton.Width = 0
       
        For iter = 0 To listboxname.Items.Count - 1
            'on mesure le nom 
            modelbutton.Text = listboxname.Items(iter).ToString
            If modelbutton.PreferredSize.Width > maxsizebuton.Width Then
                maxsizebuton = modelbutton.PreferredSize

            End If
        Next

    End Sub
    Private Sub listboxname_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles listboxname.SelectedIndexChanged
        If DirectCast(sender, ListBox).SelectedItems.Count > 0 Then
            'buttonselect.Visible = True
            buttonselect.Enabled = True
        Else
            buttonselect.Enabled = False
        End If
    End Sub

    Private Sub buttonselect_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles buttonselect.MouseClick
        listname.Clear()
        For Each item As String In listboxname.SelectedItems
            listname.Add(item)
        Next
        'remove all selected name 
        For iter = listboxname.SelectedItems.Count - 1 To 0 Step -1
            listboxname.Items.Remove(listboxname.SelectedItems(iter))
        Next
        DirectCast(sender, Button).Enabled = False
        DirectCast(sender, Button).Visible = False
        listboxname.Visible = False

        Createbuttons()
    End Sub
    Private Sub Createbuttons()
       

        For Each name As String In listname
            Dim mybutton As New Button
            With mybutton
                .Font = New Font("arial", 14, FontStyle.Bold)
                .TextAlign = ContentAlignment.MiddleCenter
                .Text = name
                .BackColor = Color.PowderBlue
                .AutoSize = False
                .Width = Convert.ToInt32(maxsizebuton.Width)
                .Height = Convert.ToInt32(maxsizebuton.Height)
                AddHandler .MouseClick, AddressOf mouseclickbutton
            End With
            ' listbutton.Add(mybutton)
            panelbutton.Controls.Add(mybutton)
        Next
         PlaceButtons()
    End Sub
    Private Sub PlaceButtons()
        Dim positionx As Integer
        Dim positiony As Integer
        Dim space As Integer
        Dim iter As Integer

        space = 4
        positionx = space
        positiony = space
       
       
        iter = 0
        For Each ctrl In panelbutton.Controls
            If TypeOf ctrl Is Button Then
                If (iter Mod 5 = 0) And iter <> 0 Then
                    positionx = space
                    positiony += DirectCast(ctrl, Button).Height + space
                End If
                DirectCast(ctrl, Button).Location = New Point(positionx, positiony)
                positionx += DirectCast(ctrl, Button).Width + space
                iter += 1
               
            End If
        Next
        panelbutton.Width = Convert.ToInt32(maxsizebuton.Width) * 5 + 6 * space
        panelbutton.Height = Convert.ToInt32(maxsizebuton.Height) * 10 + 11 * space
        panelbutton.Left = Me.Width \ 2 - Me.panelbutton.Width \ 2
        panelbutton.Top = Me.Height \ 2 - Me.panelbutton.Height \ 2
        buttonreturn.Location = New Point(2, 2)
        If listboxname.Items.Count > 0 Then
            buttonreturn.Visible = True
        End If
        panelbutton.Visible = True
    End Sub
    Private Sub mouseclickbutton(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        MessageBox.Show("tu as cliqué:" & DirectCast(sender, Button).Text)
    End Sub

    Private Sub buttonreturn_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles buttonreturn.MouseClick
        DirectCast(sender, Button).Visible = False
        panelbutton.Visible = False
        buttonselect.Visible = True

        listboxname.Visible = True
    End Sub
End Class


pour etre sur la meme longueur d'onde
dans le code
tous les boutons ont la meme taille
le panelbutton :le panel qui contient des boutons a toujours la meme taille qu'il y aient
un bouton ou 20 ou 50
la taille est
largeur = 5 *largeurboutons + 6 space
hauteur = 10 *hauteurboutons + 11 space
space c'est l'écart entre chaque bouton
aussi on ne place pas les boutons au bord du
panel
le modulo
supposons que tu choisis 15 membres de la liste
donc il faut disposer 15 boutons
5 boutons par rangée
donc dans la rangée le bouton.top est le meme
pour les 5
comment vas tu indiqué que le 6 iem bouton
doit etre placé dans la rangée du dessous ?
c.a.d le bouton.top change
avec le modulo 5 chaque fois que mod 5 = 0
on passe à la rangée suivante
ça marche avec l'écran tactile ?
3
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
4 janv. 2012 à 09:54
Bonjour Moundir n°76,

Comment peut-on te demander à "l'école", de faire quelque chose que tu dis ne pas savoir faire ?
Un professeur donne toujours un cous puis des exemples pratiques...

Cordialement, Joe.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Moundir76 Messages postés 286 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
4 janv. 2012 à 10:02
Bonjour,

Cela fait 1 an que les cours fonctionnent comme cela, pour la partie développement c'est à nous de nous débrouiller car on apprends toujours mieux par soi même. Donc non je n'ai pas eu de cours ni d'exemple pratique, c'est pour ça que je me tourne vers cette communauté, et je suis actuellement en stage.

Je ne demande pas que l'on me donne le code, je souhaiterais savoir si cela est possible et avoir des astuces.

Cordialement.
0
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
4 janv. 2012 à 10:10
Bonjour Moundir n°76,

Alors pour faire ainsi il faut déclarer les objets à l'aide du code.

Toutfois ce n'est pas optimisé comme solution, car on n'aura pas la place de mettre un bouton par personne s'il y en a de trop, de facto le plus appropriét serait une liste avec des cases à cocher tout simplement (on peut faire une grosse liste pour les doigts)...

Et l'enregistrment, je présume que tu sais dans quoi on enregistre...

Cordialement, Joe.
0
Moundir76 Messages postés 286 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
4 janv. 2012 à 10:19
Merci de votre réponse, en effet je comprends que les boutons ne vont pas être la meilleure solution. Cependant, que voulez vous dire par "liste". Une listbox ? car je ne vois pas comment la rendre plus "grosse".

Merci d'avance

Cordialement
0
Moundir76 Messages postés 286 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
4 janv. 2012 à 10:22
Edit : En effet une Checklistbox parait appropriée si les caractères sont assez grands, même si je trouve embêtant de dérouler la liste si elle est trop grande.

Merci pour votre aide
0
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
4 janv. 2012 à 10:31
Suite...

Ben si la liste est grande, c'est que tu n'auras pas assez de place pour y mettre les bouton, ah...

En plus une double intervention n'est pas non plus totalement optimisée, choisir d'abord les présents, puis valider les présents, je dirais qu'à partir du moment où tu choisis les présents, tu n'as plus à les valider, puisque tu peux le faire en les choisissant, ah²...

Une liste prend la taille qu'on lui donne, et la taille de la police qu'on lui indique

Cordialement, Joe.
0
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 56
4 janv. 2012 à 11:13
Bonjour

Pas clair

pourquoi créer des boutons dynamiquement si tu
sais que tu en as besoin 5
tu peux créer en mode design IDE 5 boutons
0
Moundir76 Messages postés 286 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
4 janv. 2012 à 11:55
Car si par exemple un 6ème personne vient, alors on ajoutera a la liste et alors un 6 ème bouton va se mettre en place pour qu'elle puisse cliquer dessus. Suis je clair ?
0
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 56
4 janv. 2012 à 13:42
Comme ça oui
connais tu les évenements de l'écran tactile ?
avec la souris

Private Sub Button1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseClick

    End Sub


avec l'écran tactile
peut etre le tap event
0
Moundir76 Messages postés 286 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
4 janv. 2012 à 13:55
L'écran tactile réagit comme une souris : on appuie a un endroit et ça fait un clic, donc c'est bien un MouseClick !

Merci de ton aide
0
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 56
4 janv. 2012 à 15:13
les noms des évenement sont différents
un code pour écran normal

Private listbouton As New List(Of Button)
   Dim xp, yp As Integer
        xp = 1
        yp = 1
        For iter = 0 To n
            Dim mybutton As New Button
            With mybutton
                .Text = 'le non de la personne 
                .Location = New Point(xp, yp)
                AddHandler .'the event for touch ,AddressOf mousebuttonresultclick
            End With
            Me.Controls.Add(mybutton)
            listbouton.Add(mybutton)
            xp += mybutton.Width + 3
        Next
0
Moundir76 Messages postés 286 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
4 janv. 2012 à 16:44
Merci pour ton code, cependant je ne le comprends pas . Au niveau de AddHandler. J'ai mis AddHandler .MouseClick, et la je ne sais pas quoi mettre après.

Je te remercie par avance
0
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 56
4 janv. 2012 à 20:02
quand tu mets un control sur ta form
disons un bouton button1
à button1 est associé toute une liste
d'évenement que tu choisis dans la fenetre
ex ton editeur
button1 liste des évenements

mais quand on crée un control dynamiquement
il faut indiquer dans le code l'évenement
et un delegate
ex

AddHandler .MouseClick, AddressOf monmouseclick
AddHandler .MouseUp, AddressOf trucblabla
Private Sub monmouseclick(ByVal sender As Object, ByVal e As System.Windows.Formss.MouseEventArgs)

    End Sub
    Private Sub trucblabla(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)

    End Sub


dans l'ex j'ai écrit
.mouseup 
ou
.mouseclick


mais avec l'écran tactile c'est un autre évenement

As tu un écran tactil ?
0
Moundir76 Messages postés 286 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
5 janv. 2012 à 10:13
Merci de ta réponse, j'avais répondu hier mais je me suis trompé de Topic...
Je viens de comprendre ce que tu m'as expliqué et je t'en remercie. Oui j'ai un écran tactile mais je pensais que le fait de cliquer avec son doigt avait le même un effet qu'un MouseClick ...
Donc ton code permet de créer des boutons dynamiquement a partir d'une variable (n dans ton code). Ces boutons vont être placés a la suite avec un écart entre chaque bouton. Mais le bémol est qu'ils vont être placés en dehors de la form... Je ne vois pas comment spécifier des coordonnées afin que le bouton s'ajuste en fonction de la form. Longueur/ largeur, voir dimensions du bouton. En tout cas un grand merci à toi, je vais pouvoir travailler sur ce code et essayer d'en tirer qqe chose !
0
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 56
5 janv. 2012 à 11:02
tu as écran tactile
fais le test suivant
place sur ta form un bouton (button1)
dans ton code
clique le listbox en haut à gauche
clique sur button1 et clique sur le listbox de
droite
as tu dans la liste un évenement nommé tap
(les noms sont en français ou en anglais ?)
j'ai le visual studio en anglais

Les gens sont enregistrées dans une BDD.

Le database est déja écrit?

Mais le bémol est qu'ils vont être placés en dehors de la form... Je ne vois pas comment spécifier des coordonnées afin


pas compris pourquoi ils seront placés en dehors de la form ?
un control est toujours placé dans le control
qui le contient
comment veux tu disposer les boutons?
as tu commencer à écrire quelque chose?
ton projet c'est seulement les boutons ?
0
Moundir76 Messages postés 286 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
5 janv. 2012 à 11:34
JE viens d'essayer avec l'écran tactile, les évènements sont des MouseClick, donc aucun problème au niveau du tactile, l'utilisation se fait exactement comme avec une souris.
Pour les boutons, par exemple si je genere 50 boutons, ils vont se faire de gauche a droite mais ils vont continuer a aller en dehors de la form. Tu comprends ?
Ma BDD est déjà écrite, ça après j'ai organisé dans ma tête comment récupérer une liste et l'associer aux boutons dans une boucle "Pour", mais les boutons ne s'adaptent pas a la Form...

Merci d'avance
0
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 56
5 janv. 2012 à 12:00
si c'est 50 boutons
peut etre les boutons ne conviennent pas
un combobox serait mieux
que fait ton projet ?
0