Controle indexé ?

cs_REMYB Messages postés 8 Date d'inscription jeudi 15 mai 2003 Statut Membre Dernière intervention 13 juin 2003 - 13 juin 2003 à 13:15
Delbeke Messages postés 200 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 18 novembre 2005 - 15 juin 2003 à 02:08
Je souhaiterai ajouter plusieurs boutons identique à un formulaire et leur affecté du code s'til un évenement click...

Je m'y prend peut-etre mal ??

Merci d'avance

Le code en vb.net :

Copier le code entier dans un nouveau programme

Définir dans les proprié té de la'application la feuille de démmarage frm_commandes

et coller le code suivant pour exemple :

Public Class Frm_prep_commandes

Inherits System.Windows.Forms.Form
Friend WithEvents cmd_Detail As System.Windows.Forms.Button
Public strClients As String()
Public lblClients As Label()
Public lblInterlocuteurs As Label()
Public lblDerniereCommande As Label()
Public lblTelephone As Label()
Public i, j, k, x, y As Integer

#Region " Code généré par le Concepteur Windows Form "

Public Sub New()

MyBase.new()

Me.AutoScroll = True
strClients = New String() {"Essai1", "Essai2", "Essai3", "Essai4"}

ReDim lblClients(4)
ReDim lblDerniereCommande(4)
ReDim lblInterlocuteurs(4)
ReDim lblTelephone(4)

Dim cmd_Detail As Button()

ReDim cmd_Detail(4)

x = 50
y = 100

For i = 0 To 3

lblClients(i) = New Label
lblClients(i).Text = strClients(i)
lblClients(i).Size = New Size(220, 20)
lblClients(i).Location = New Point(50, x)
lblClients(i).Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Controls.Add(lblClients(i))

cmd_Detail(i) = New Button
cmd_Detail(i).Text = "Commande"
cmd_Detail(i).Size = New Size(200, 20)
cmd_Detail(i).Location = New Point(400, x)
cmd_Detail(i).TabStop = False
Me.Controls.Add(cmd_Detail(i))

x += 21

cmd_Detail(i) = New Button
cmd_Detail(i).Text = "Consultation historique"
cmd_Detail(i).Size = New Size(200, 20)
cmd_Detail(i).Location = New Point(400, x)
cmd_Detail(i).TabStop = False
Me.Controls.Add(cmd_Detail(i))
x += 21

lblDerniereCommande(i) = New Label
lblDerniereCommande(i).Text = "Dernière commande le : Mercredi 24 Septembre 2003"
lblDerniereCommande(i).Size = New Size(350, 20)
lblDerniereCommande(i).Location = New Point(80, x)
Me.Controls.Add(lblDerniereCommande(i))
x += 21

lblInterlocuteurs(i) = New Label
lblInterlocuteurs(i).Text = "Interlocuteurs : Eric "
lblInterlocuteurs(i).Size = New Size(350, 20)
lblInterlocuteurs(i).Location = New Point(80, x)
Me.Controls.Add(lblInterlocuteurs(i))
x += 21

lblTelephone(i) = New Label
lblTelephone(i).Text = "Téléphone : 02.62.98.58.69"
lblTelephone(i).Size = New Size(350, 20)
lblTelephone(i).Location = New Point(80, x)
Me.Controls.Add(lblTelephone(i))
x += 40
Next i
Me.WindowState = FormWindowState.Maximized

End Sub

'La méthode substituée Dispose du formulaire pour nettoyer la liste des composants.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub

'Requis par le Concepteur Windows Form
Private components As System.ComponentModel.IContainer

'REMARQUE : la procédure suivante est requise par le Concepteur Windows Form
'Elle peut être modifiée en utilisant le Concepteur Windows Form.
'Ne la modifiez pas en utilisant l'éditeur de code.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
'
'Frm_prep_commandes
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(292, 273)

End Sub

#End Region


End Class

1 réponse

Delbeke Messages postés 200 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 18 novembre 2005
15 juin 2003 à 02:08
Je ne connais pas VB NET, mais je connais la techique utilisée par VB : céer une collection contenant les controles. quand un controle déclenche un événement, il est répercuté par la collection en lui ajouta l'index de l'objet qui a déclenché l'événement.

J'ai un peu regardé VB NET et l'impossibilté pour l'interve de programmation de gérer le collection de composant m'a tout de suite rebuté. j'ai alors créé un petit programme VB qui avait cette fonctinalité et j'ai utilisé l'assitant de migration pour voir comment il résoudrait le problème et effectivement il (l'assitant) était passé par l'intermédiaire d'une collection spécialement prévue pour faire ce travail. je vous conseillerais donc de faire la même manip et vous aurez la solution.
Jean-Luc
0
Rejoignez-nous