Suite a une question que j'ai poster sur le forum, j'ai trouver la solution
Voici ce que dois faire le code
-Création d'un tableau de Label, sous la forme 7 de large X 24 de haut
-Analyse de la position de la sourie, grâce à un mouseMove
-Changer la couleur correspondante au Label où se trouve la sourie (Attention, le label doit pas clignoter, donc on doit savoir quand on entre la première fois dessus et quand on change de label
-Changer seulement la couleur quand un clic de la sourie est appuyé
c'est le dernier point qui est dur, puisqu'en VB.Net, quand on appui sur une touche, le focus reste sur le dernier Label apuyé, malgré qu'on détecte le mouseMove
Source / Exemple :
Public Class GroupeHeure
Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
'Vérificateur pour empêcher de clignoter
Dim validerX As Integer
Dim validerY As Integer
Public Sub New()
MyBase.New()
Dim i As Integer, j As Integer
Dim handlerHoraireMove As MouseEventHandler = New MouseEventHandler(AddressOf HoraireMove)
'Construction du tableau
For i = 0 To 6
For j = 0 To 23
Me.Label(i, j) = New System.Windows.Forms.Label
AddHandler Label(i, j).MouseMove, handlerHoraireMove
Me.Label(i, j).BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.Label(i, j).Location = New System.Drawing.Point(145 + 80 * i, 40 + j * 15)
Me.Label(i, j).Name = "Label1"
Me.Label(i, j).Size = New System.Drawing.Size(80, 15)
Me.Label(i, j).Tag = 1
Me.Controls.Add(Me.Label(i, j))
Next j
Next i
'This call is required by the Windows Form Designer.
InitializeComponent()
Me.Show()
'Add any initialization after the InitializeComponent() call
End Sub
'Form overrides dispose to clean up the component list.
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
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
Friend Label(6, 23) As System.Windows.Forms.Label
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.SuspendLayout()
'
'GroupeHeure
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.BackColor = System.Drawing.Color.AliceBlue
Me.ClientSize = New System.Drawing.Size(772, 527)
Me.Name = "GroupeHeure"
Me.Text = "Création des Groupe d'heure de travail"
Me.ResumeLayout(False)
End Sub
#End Region
'Mon mousemove
Private Sub HoraireMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
Dim i As Integer, j As Integer
If e.Button <> MouseButtons.None Then
i = vertical(CType(sender, Label).Top + e.Y)
If i >= 0 Then
j = Horizontal(CType(sender, Label).Left + e.X)
If j >= 0 Then
ChangerCouleur(Label(j, i), i, j)
End If
End If
End If
End Sub
'Détecter le X et le Y du tableau
Private Function vertical(ByVal Y As Single) As Integer
Dim i As Integer
If Y >= 40 And Y < 400 Then
i = Int((Y - 40) / 15)
Return i
Else
Return -1
End If
End Function
Private Function Horizontal(ByVal x As Single) As Integer
Dim i As Integer
If x >= 145 And x < 705 Then
i = Int((x - 145) / 80)
Return i
Else
Return -1
End If
End Function
'Changer mes couleur et vérification si on a changer de label
Private Sub ChangerCouleur(ByVal CLabel As Label, ByVal i As Integer, ByVal j As Integer)
Dim ok As Boolean = False
Try
If validerX <> j Or validerY <> i Then
ok = True
End If
Catch
ok = True
End Try
If ok Then
If CLabel.Tag = 1 Then
CLabel.BackColor = Color.SteelBlue
CLabel.Tag = 2
Else
CLabel.BackColor = Color.AliceBlue
CLabel.Tag = 1
End If
validerX = j
validerY = i
End If
End Sub
End Class
Conclusion :
Désoler, je peux pas mettre mon application, puisque ça fasi partie d'une très grosse application que je fais et ça fais très longtemps qu'elle a dépasser le 1 mo compressé
mais vous avez seulement à al mettre dans une forme et ça devrasi amrcher au complet
j'ai ajouter un exemple de son utilisation, j'ai du presque tout supprimer pour pouvoir mettre seulement ça, mais bon, ça va vous donner un exemple de ce qu'on peut faire avec
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.