Public Class Form1 Private enCours As Boolean 'Flag permettant de controler la frappe en cours Private carIndex As Integer 'Index du caractère à insérer Private lastButtonName As String 'Nom du dernier bouton appuyé Private Sub Touche_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click 'Bouton appuyé Dim bouton As Button = CType(sender, Button) 'Caractères disponibles placés dans une table en découpant le tag par le caractère ';' Dim tCar() As String = bouton.Tag.ToString().Split(";"c) 'Reset du timer Me.Timer1.Stop() Me.Timer1.Start() 'Si une frappe est en cours et que le même bouton est appuyé If (enCours And (lastButtonName = bouton.Name)) Then 'On incrémente l'index de caractère à insérer carIndex += 1 'On controle qu'on ne dépasse pas le nombre max de caractères à dispositions pour la touche If carIndex > tCar.GetUpperBound(0) Then carIndex = 0 'On efface le dernier caractère saisi Me.TextBox1.Text = Me.TextBox1.Text.Substring(0, Me.TextBox1.Text.Length - 1) Else 'On initialise les variables pour une nouvelle frappe enCours = True carIndex = 0 lastButtonName = bouton.Name End If 'On insère le caractère Me.TextBox1.AppendText(tCar(carIndex)) End Sub Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick 'On initialise les variables pour une frappe en treminée enCours = False carIndex = -1 lastButtonName = String.Empty End Sub End Class
Public Class Form1 Private Sub Cmd_OpenForm2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cmd_OpenForm2.Click Form2.Show() End Sub Public Sub StartMyTimer() Me.TimerF1.Start() End Sub End Class Public Class Form2 Private Sub Cmd_Start_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cmd_Start.Click 'Démarre le timer de form2 Me.TimerF2.Start() 'Démarre le timer de form1 Form1.StartMyTimer() End Sub End Class
Public Class Form1 Private Sub Cmd_OpenForm2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cmd_OpenForm2.Click Dim f2 As New Form2(Me) f2.Show() End Sub Public Sub StartMyTimer() Me.TimerF1.Start() End Sub End Class Public Class Form2 Private _parent As Form Public Sub New(ByVal parent As Form) Me.InitializeComponent() _parent = parent End Sub Private Sub Cmd_Start_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cmd_Start.Click 'Démarre le timer de form2 Me.TimerF2.Start() 'Controle si la forme parente est bien de type Form1 If TypeOf _parent Is Form1 Then 'Démarre le timer de form1 CType(_parent, Form1).StartMyTimer() End If End Sub End Class