IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Windows Forms Discussion :

[VB.NET] - Message Box - Intercepter le bouton Aide?


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 52
    Points : 34
    Points
    34
    Par défaut [VB.NET] - Message Box - Intercepter le bouton Aide?
    Salut, je fais un msgbox de la façon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox("ERR-902. Le numéro de téléphone ou télécopieur spécifié est invalide.", MsgBoxStyle.MsgBoxHelp, "Erreur.")
    J'aimerais intercepter si l'utilisateur appui sur le bouton 'AIDE' (ou Help) hors Visual Studio ne me donne pas le bouton aide dans les MsgBoxResult possibles, quelqu'un sait comment intercepter le bouton 'AIDE'?

    Merci!

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par MSDN
    Si la boîte de dialogue contient un bouton Aide, cela signifie qu'une aide contextuelle relative à la boîte de dialogue est disponible. Toutefois, aucune valeur n'est retournée tant que l'utilisateur n'a pas cliqué sur l'un des autres boutons.
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  3. #3
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    si tu ne t'en sors pas il te reste une solution .Net qui est d'implementer ta propre HelpMessageBox
    Exemple (il manque ci-dessous le InitializeComponent et le Dispose)
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    Option Explicit On 
    Option Strict On
     
    Imports Microsoft.VisualBasic
    Imports System
    Imports System.ComponentModel
    Imports System.Diagnostics
    Imports System.Drawing
    Imports System.Resources
    Imports System.Windows.Forms
     
    Public Class HelpMessageBox
     Inherits Form
     
     Private hlpResult As Result
     
     Private components As IContainer
     Friend WithEvents LMessage As Label
     Friend WithEvents Bok As Button
     Friend WithEvents Baide As Button
     
     Public Enum Result
      OK = 1
      Aide = 8
     End Enum
     
     Public Sub New()
       MyBase.New()
       Me.InitializeComponent()
     End Sub
     Public Sub New(ByVal titre As String, ByVal message As String)
       Me.New()
       Me.Text = titre
       Me.LMessage.Text = message
     End Sub
     Public ReadOnly Property HelpResult() As Result
       Get
          Return Me.hlpResult
       End Get
     End Property
     Public Function Dialog() As Result
       Me.ShowDialog()
       Return Me.hlpResult
     End Function
     
     Private Sub Baide_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Baide.Click
       Me.hlpResult = Result.Aide
       Me.Close()
     End Sub
     Private Sub Bok_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Bok.Click
       Me.hlpResult = Result.OK
       Me.Close()
     End Sub
     
    End Class

    A utiliser ainsi dans la Form appelante
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim HelpMsg As New HelpMessageBox("UnTitre", "UnMessage")
    Dim reponse As HelpMessageBox.Result = HelpMsg.Dialog()
    If reponse = HelpMessageBox.Result.Aide Then
      'traiter si appui sur Aide
    Else
      'traiter si appui sur Ok
    End If
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 52
    Points : 34
    Points
    34
    Par défaut
    Merci beaucoup pour cette information!

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 52
    Points : 34
    Points
    34
    Par défaut
    Hum j'ai essayer la classe et tout mais il me balance une erreur null

    System.NullReferenceException
    Object reference not set to an instance of an object.
    Je ne fais que pourtant me créer un objet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim objAideMsgBox As New HelpMessageBox("titre","message")
    objAideMsgBox.Dialog()

  6. #6
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Ben j'ai bien compris l'exception mais elle n'a certainement rien à voir avec les lignes de code que tu me mets, çà doit venir de ton code de la classe que tu as certainement copier/coller
    Fais un debug pas à pas à partir d'un point d'arrêt sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim objAideMsgBox As New HelpMessageBox("titre","message")
    Ainsi on pourra peut être savoir quelle est la ligne exacte qui lève cette NullException

    Citation Envoyé par neguib
    Exemple (il manque ci-dessous le InitializeComponent et le Dispose)
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 52
    Points : 34
    Points
    34
    Par défaut
    L'erreur se fait sur bout de code suivant, dans le constructeur paramétré.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.LMessage.Text = message

  8. #8
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par xVINCEx
    L'erreur se fait sur bout de code suivant, dans le constructeur paramétré.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.LMessage.Text = message
    Euh tu le fais exprès ou quoi ? je répète
    Citation Envoyé par neguib
    Exemple (il manque ci-dessous le InitializeComponent ...
    Tu as quand même vu dans le code qu'il y a un appel Me.InitializeComponent(), je peux voir comment tu as coder cette méthode qui sert habituellement à instancier et paramétrer et ajouter les contrôles à la Form
    à tous les coup tu n'as pas fait de New Label etc...
    Essayes de lire attentivement si je t'ai mis cet avertissement ce n'était pas pour des prunes
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 52
    Points : 34
    Points
    34
    Par défaut
    D'accord, je vais trouver de la référence sur InitializeComponent car j'au aucune idée comment cela fonctionne et encore moins comment ajouter les controles au form donc j'ai quedalle idée quoi mettre comme code dans la méthode.

  10. #10
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Pour faire simple fais ta Form en mode design et cela se fera automatiquement
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 52
    Points : 34
    Points
    34
    Par défaut
    Oh voila, merci beaucoup pour ton aide neguib.

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 52
    Points : 34
    Points
    34
    Par défaut
    Le tout est fonctionnel, je n'ai pourtant pas de Dispose. Est-ce que tu pourrais me dire l'objectif du dispose et son utilité dans mon cas? Merci

  13. #13
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Ben si tu avais clicker droit sur ton projet et ajouter une nouvelle WindowsForm il t'aurait mis automatiquement ton dispose juste après le Sub New() (verifies s'il n'a pas été généré automatiquement)
    Sinon c'est de ce type
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    'Requis par le Concepteur Windows Form
    'La méthode substituée Dispose du formulaire pour nettoyer la liste des composants.
     
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
       If disposing Then
          If Not (components Is Nothing) Then
            components.Dispose()
          End If
       End If
       MyBase.Dispose(disposing)
    End Sub
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 52
    Points : 34
    Points
    34
    Par défaut
    Merci pour ton temps et ton aide neguib.

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2020
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2020
    Messages : 30
    Points : 5
    Points
    5
    Par défaut
    Désolé, je déterre (16 ans après! ) mais parce que j'ai eu besoin de cette fonctionnalité et que je n'ai rien trouvé sur internet (à part en VBA...), je vous mets ce que j'ai trouvé :

    En cliquant sur le bouton [Aide] du msgbox, apparemment ça ne fait rien mais en réalité, cela génère un évènement HelpRequest sur le formulaire principal qui a appelé la msgbox.
    Par contre, HelpRequest ne gère pas la reconnaissance du msgbox qui demande l'aide (le sender reste sur le formulaire principal)

    Du coup, à chaque fois que j’appelle un msgbox avec de l'aide, je modifie une variable avant qui représente l'identifiant du msgbox appelant l'aide :

    Quelque part dans le programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Aide_msgbox=1
    msgbox(un message)... # avec un bouton Aide ( ..., MsgBoxStyle.Exclamation Or MsgBoxStyle.YesNo Or MsgBoxStyle.MsgBoxHelp,... )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Aide_msgbox=2
    msgbox(un autre message)... # avec un bouton Aide ( ..., MsgBoxStyle.Exclamation Or MsgBoxStyle.YesNo Or MsgBoxStyle.MsgBoxHelp,... )
    Dans le HelpRequest :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Select Case Aide_msgbox
    Case 1
    # Aide sur msgbox1
    Help.ShowHelp(Nothing, NomDuFichierDaide, HelpNavigator.TopicId, "45")
    Case 2
    # Aide sur msgbox2
    Help.ShowHelp(Nothing, NomDuFichierDaide, HelpNavigator.TopicId, "46")
    Case else
    # Aide générale
    Help.ShowHelp(Nothing, NomDuFichierDaide, HelpNavigator.TopicId, "0")
    End Select
    Voilà, j'espère que cela pourra servir à quelqu'un...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Message box sans le bouton "Annuler"
    Par lucazzo dans le forum ASP.NET
    Réponses: 2
    Dernier message: 15/01/2013, 09h38
  2. Bouton de commande avec message box
    Par safrane dans le forum IHM
    Réponses: 37
    Dernier message: 21/11/2007, 10h46
  3. [C#] Message box avec des boutons diff.
    Par BoOom dans le forum Windows Forms
    Réponses: 1
    Dernier message: 21/04/2006, 11h47
  4. Réponses: 4
    Dernier message: 08/03/2006, 11h43
  5. [VB.NET][2.0] Interception de messages Windows
    Par DotNET74 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 02/02/2006, 19h26

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