Je suis pur débutant en VB (pour info j'utilise visual basic 2010 express, désolé si je n'ai pas posté au bon endroit..)
J'essaye de programmer un petit qcm, afin que l'apprentissage soit ludique !
je me pose deux questions auxquelles je n'ai pas trouvé réponse sur le net :
tout d'abord voici mon code (Form1 est le menu principal , trois boutons, dont le Btclic1 qui quand cliqué renvoie un message dans un label, et devrait renvoyer vers le Form2, où se trouve le qcm, une fois la touche entrée pressée.
voici le code utilisé :
Private Sub Btclic1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btclic1.Click
Label1.Text = "Allons y ! " & vbCrLf & "Presse Entrée pour passer au qcm:)"
End Sub
Est ce possible "d'incruster" une fonction #if afin que si la touche "entrée" est pressée cela me renvoie vers Form2?
du genre intégrer dans le code si dessus :
#If KeyAscii = 13 Then
--appel Form2 (ma deuxième question, j'y reviendrai)
#End If
quelle serait la syntaxe correcte?
du coup ma deuxième question à laquelle je n'ai pas trouvée de solution jusqu'à présent, c'est la commande permettant d'appeler un autre Form depuis le Form1 selon les conditions de validation : clic sur Btclic1 puis appui "ENTER"..
faut il préparer également la Form2, qui est vide pour l'instant pour qu'elle soit chargeable?
si vous pouvez m'éclairer un petit peu, ce serait sympa :)
Il y a quelque chose qui cloche
si tu mets Label1.Text = "Allons y ! "
dans le click du bouton tu ne verras pas le label
puisque tu affiches le form2
pourquoi shared et pas public ?
Si tu mets un point d'arret à la ligne
Shared Sub blabla() ça n'accède pas ?
peut etre comme ça
Sub Btclic1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btclic1.Click
form1.visible = false
Form2.visible = true
End Sub
Public Class Form2
Private Sub blabla()
MsgBox("test qcm")
End Sub
Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
blabla()
End Sub
End Class
Bonsoir
la touche enter appuyé est detectée par
l'évenement keydown ou keypress
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyValue = 13 Then
form2.blabla()
End If
End Sub
Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
If e.KeyChar = ChrW(13) Then
form2.blabla()
End If
End Sub
salut, merci pour la commande de la touche entrée :)
cependant j'ai testé ça :
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyValue = 13 Then
Form2.Show()
End If
End Sub
j'ai eu beau farfouiller dans toutes les possibilités de l'assistant, je ne trouve pas le bon terme pour appeler Form2, je pensais à .show mais ça ne fait rien quand je presse entrée (Form2 est crée mais vide)
une petite question : avec le code que tu m'as donné, y a t il des priorités? afin que le Btclic1 soit la règle n°1, puis "ENTER" pressé la règle n°2 pour renvoyer vers Form2?
en fait c'est vrai que le clic sur btclic1 puis la nécessité de presser "entrée" n'est pas fondamentale !
ce que je voulais essayer de faire c'est une sous fonction en quelque sorte, je clique sur le bouton, et il m'invite à poursuivre en tapant entrée au clavier.
j'aurais pu me limiter à juste un
Private Sub Btclic1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btclic1.Click
Label1.Text = "Allons y ! "
Form2.Show ' je ne connais pas le bon terme pour me renvoyer à Form2
End Sub
Le Form2 est la partie où le qcm sera posé, je pensais que niveau structure c'était plus propre de différencier le menu d'accueil et le qcm. non? il ya plus simple?
sinon effectivement, je l'ai bien crée, mais pas encore rempli, donc vide oui, faut il lui indiquer qu'il va etre appelé?
Oui je crois
d'abord le bouton suffit pas besoin d'un bouton
et la touche enter
je ne savais ce que c'était un QCM
après avoir consulter google je sais un peu plus
L'as tu déja rédigé ?
Où tu gardes les questions dans un fichier txt
tu as une question et plusieurs réponses dont
une juste
la question sera placé dans un label
les réponses aussi avec un radiobutton pour
chaque réponse
il faut aussi avoir posséder la liste des bonnes
réponses
donc tu as encore du boulot
j'ai modifié le code, mais je n'arrive toujours pas à accéder à Form2...
code Form 1 où je l'appelle
Sub Btclic1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btclic1.Click
Label1.Text = "Allons y ! "
Form2.blabla() 'appel du qcm
End Sub
et, le code de recup dans Form2 :
Public Class Form2
Shared Sub blabla()
End Sub
End Class
après oui je sais que j'ai encore du boulot à noter comme il se doit dans un.txt les questions réponses, ou un xls, puis à traiter tout cela. Mais pour bien comprendre j'aimerais faire les choses dans l'ordre, et là je bloque sur une transition de form1 à form2 !
Je pause :) j'y reviendrai dans une heure ou deux, merci pour ton aide !
Merci ! oui ça devait clocher car la form1 restait en premier plan, maintenant le clic se fait, j'ai viré le label (qui ne sert plus que pour les autres boutons)et je vois la form2 après clic sur le bouton :)
Merci bien de ton aide,
bon j'ai fait un truc pas très propre pour pouvoir mettre fin à l'appli qui ne voulait pas se couper en cliquant sur la croix , j'ai crée un bouton dédié à la fin :
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End
End Sub
Mais je m'en vais le remettre de manière plus organisée sans tarder