"incruster" une fonction if et renvoi vers autre Form [Résolu]

Signaler
Messages postés
5
Date d'inscription
dimanche 6 juin 2010
Statut
Membre
Dernière intervention
5 décembre 2010
-
Messages postés
5
Date d'inscription
dimanche 6 juin 2010
Statut
Membre
Dernière intervention
5 décembre 2010
-
bonjour,

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 :)

Merci par avance , bonne soirée !

8 réponses

Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
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

Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
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
Messages postés
5
Date d'inscription
dimanche 6 juin 2010
Statut
Membre
Dernière intervention
5 décembre 2010

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?

Merci en tout cas pour le coup de pouce ;)
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Je n'ai pas bien compris ce que tu veux
faire
tu as un bouton et la touche enter ?


Form2, je pensais à .show mais ça ne fait rien quand je presse entrée (Form2 est crée mais vide)


à quoi sert ton form2 ?
Il n'est pas crée il existe déja puisque tu l'as ajouté avec project -> add windows form
possible qu'il est vide
Messages postés
5
Date d'inscription
dimanche 6 juin 2010
Statut
Membre
Dernière intervention
5 décembre 2010

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é?
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
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
Messages postés
5
Date d'inscription
dimanche 6 juin 2010
Statut
Membre
Dernière intervention
5 décembre 2010

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 !
Messages postés
5
Date d'inscription
dimanche 6 juin 2010
Statut
Membre
Dernière intervention
5 décembre 2010

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

je marque le sujet en résolu, bonne soirée !