none
(Visual Studio 2008) Manipulation des pages d'un TABCONTROL RRS feed

  • Question

  • Bonjour,

    J'ai fait un mini projet pour expliciter ma question

    Soit une FORM avec un TABCONTROL et deux TABPAGE

    Sur TABPAGE1 j'ai une TEXTBOX, un LABEL et un BUTTON

    Quand je clique sur le BUTTON, je lance la procédure CONTRÔLE

    Dans cette procédure, je vérifie que la TEXTBOX soit différente de zéro

    Si c'est le cas, j'affiche un message d'erreur, je sélectionne cette TEXTBOX et j'y mets le focus

    Si c'est correct, revenu dans le code du BUTTON j'affiche dans le LABEL le résultat de la valeur de la TEXTBOX multiplié par deux

    Sur TABPAGE2, j'ai un LABEL

    Si je clique sur l'onglet de TABPAGE2, je lance la procédure CONTRÔLE

    Si c'est correct, j'affiche dans le LABEL le résultat de la valeur de la TEXTBOX multiplié par deux

    Si ce n'est pas correct, c'est là que se situe mon problème

    La procédure contrôle déclenche bien le message d'erreur, mais je suis dans TABPAGE2, et je ne vois donc pas mon TEXTBOX sélectionné

    Même quand je reviens dans TABPAGE1

    Je voudrais que quand je clique sur l'onglet TABPAGE2, voir mon TABPAGE1 avec le TEXTBOX sélectionné

    Comment faire ?

    Merci

    Cordialement

    SC

    Le code de la FORM

    Public Class Form1 Dim wOK As Boolean = True Private Sub butCalcul_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butCalcul.Click wOK = True Call Controle() If wOK = False Then Exit Sub Me.labResult1.Text = Me.txtNombre.Text * 2 End Sub Private Sub Controle() If Val(Me.txtNombre.Text) = 0 Then Beep() MessageBox.Show("Entrer un nombre !") Me.txtNombre.SelectAll() Me.txtNombre.Focus() wOK = False End If End Sub Private Sub TabControl1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabControl1.SelectedIndexChanged If Me.TabControl1.SelectedIndex = 1 Then wOK = True Call Controle()

    If wOK = False Then Me.TabControl1.SelectedIndex = 0 Exit Sub

    end if Me.labResult1.Text = Me.txtNombre.Text * 2 End If End Sub End Class



    Cordialement SC


    jeudi 6 novembre 2014 16:04

Réponses

  • Grace à ce mini projet j'ai trouvé une solution

    Mais je ne suis pas sure qu'elle soit la meilleure ...

    Il faut lancer le contrôle quand on est sur TABPAGE1 et non sur TABPAGE2

    Ce qui veut dire qu'au lancement de TABPAGE2 on revient sur TABPAGE1, on lance le contrôle

    Si c'est OK, on lance TABPAGE2

        Private Sub TabControl1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabControl1.SelectedIndexChanged
            If Me.TabControl1.SelectedIndex = 1 Then
                wOK = True
                Me.TabControl1.SelectedIndex = 0
                Call Controle()
                If wOK = False Then Exit Sub
                Me.TabControl1.SelectedIndex = 1
                Me.labResult1.Text = Me.txtNombre.Text * 2
            End If
        End Sub
    

    Cordialement

    SC


    Cordialement SC

    jeudi 6 novembre 2014 16:26