Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Bloquer tous les controls


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    février 2015
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage

    Informations forums :
    Inscription : février 2015
    Messages : 123
    Points : 61
    Points
    61
    Par défaut Bloquer tous les controls
    Bonsoir,

    Comme toujours, je m'adresse à vous après de nombreuses recherches sans résultat concluant.
    J'ai dans un form, des TextBox, Combobox, Labels et 1 DateTimePicker. J'aimerais pouvoir bloquer leurs modification lorsque que je ne suis pas dans le mode "Edition".

    Il y a bien évidement la propriété .enable , qui rempli les critères.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Unlock_control(ok As Boolean)
            For Each onglets As TabPage In Me.TabControl1.Controls
                For Each ctrl As Control In onglets.Controls
                    ctrl.Enabled = False
                Next
            Next
        End Sub
    Mais le soucis est que les controls sont alors grisés et la lecture n'est pas adaptée.
    J'ai essayer de modifier leurs backcolor et forecolor mais cela ne fonctionne pas très bien pour les textbox et pas du tout pour les combobox.

    Alors pensez vous qu'il existe d'autre moyens ?
    En vous remerciant.

  2. #2
    Membre éprouvé Avatar de Phil Rob
    Homme Profil pro
    Enseignant retraité
    Inscrit en
    novembre 2013
    Messages
    720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant retraité

    Informations forums :
    Inscription : novembre 2013
    Messages : 720
    Points : 1 224
    Points
    1 224
    Par défaut
    Bonsoir,

    Une solution (vite fait mais peut-être fastidieuse à gérer) est la suivante :

    Tu places un TextBox inutile et invisible sur le Form, soit TBInutile ce TextBox.

    Pour tout contrôle que tu veux bloquer (sans que ça se voit), en réponse à l'événement GotFocus de ce contrôle, tu programmes TBInutile.Select.

    Par exemple, pour empêcher la modif d'un TextBox TextBox1 de ton application :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub TextBox1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.GotFocus
       TBInutile.Select
    End Sub
    Bien entendu, comme il faut bien pouvoir encoder quelque chose de temps en temps, une condition peut être nécessaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub TextBox1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.GotFocus
       If CondionDeBlocageNecessaire Then
          TBInutile.Select
       End If
    End Sub
    En fait la solution est pénible à gérer s'il y a beaucoup de composants à contrôler ...

    Bon amusement,



  3. #3
    Membre du Club
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    février 2015
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage

    Informations forums :
    Inscription : février 2015
    Messages : 123
    Points : 61
    Points
    61
    Par défaut
    Merci pour votre réponse.
    Malheureusement j'ai une vingtaine de controls donc pas très propre comme solution..

    Pensez-vous qu'il est possible de faire le même principe , mais au clic dans le TabControl (ou sont regourpées mes textbox et autres?). J'ai essayé mais le clic n'est pas considéré comme étant dans le tabcontrol..


    Merci

  4. #4
    Membre éprouvé Avatar de Phil Rob
    Homme Profil pro
    Enseignant retraité
    Inscrit en
    novembre 2013
    Messages
    720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant retraité

    Informations forums :
    Inscription : novembre 2013
    Messages : 720
    Points : 1 224
    Points
    1 224
    Par défaut
    Le principe reste bon. Il te faut trouver un événement qui se produit quand un des TabControl reçoit le focus. Je ne suis plus à l'ordi et je ne peux tester. Il faut voir les événements Click, Enter, ...
    Bonne chance ... et bonne nuit

  5. #5
    Membre actif Avatar de Elthorn
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    mars 2014
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Developpeur VB amateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : mars 2014
    Messages : 121
    Points : 297
    Points
    297
    Par défaut
    Bonjour,

    Il te suffit de réaffecter temporairement les événements de click et focus des controls que tu veux bloquer


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    si edition = off
    'on enlève les anciennes liaisons
    RemoveHandler listbox1.click, AddressOf listBox1_click
    RemoveHandler listbox2.click, AddressOf listBox2_click
    RemoveHandler textbox1.click, AddressOf TextBox1_click
     
    ' on ajoute les nouvelles
    AddHandler listbox1.click, AddressOf sub_edition_off
    AddHandler listbox2.click, AddressOf sub_edition_off
    AddHandler textbox1.click, AddressOf sub_edition_off
     
    etc...
    puis de remettre en ordre quand tu en as besoin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if edition = on
    'on enlève les anciennes liaisons
    RemoveHandler listbox1.click, AddressOf sub_edition_off
    RemoveHandler listbox2.click, AddressOf sub_edition_off
    RemoveHandler textbox1.click, AddressOf sub_edition_off
    
    ' on ajoute les nouvelles
    AddHandler listbox1.click, AddressOf listBox1_click
    AddHandler listbox2.click, AddressOf listBox2_click
    AddHandler textbox1.click, AddressOf TextBox1_click
    
    etc...
    ici la sub de remplacement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sub_edition_off (ByVal sender As Object, ByVal e As System.EventArgs)
    XXXX.select 'ici tu sélectionnes autre chose
    end sub
    sincèrement

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/04/2009, 12h33
  2. Supprimer Tous les controles d'un état
    Par Dafbau dans le forum IHM
    Réponses: 10
    Dernier message: 18/12/2006, 17h38
  3. Bloquer tous les ports sauf 80,21,22,844
    Par biglittlekiss dans le forum Sécurité
    Réponses: 7
    Dernier message: 12/12/2006, 13h15
  4. verrouiller tous les contrôles d'un formulaire
    Par nogood1 dans le forum Access
    Réponses: 3
    Dernier message: 22/08/2006, 13h55
  5. Réponses: 5
    Dernier message: 07/09/2005, 09h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo