Boite de dialogue personnalisée

[Résolu]
Signaler
Messages postés
16
Date d'inscription
vendredi 21 mai 2010
Statut
Membre
Dernière intervention
28 juillet 2010
-
Messages postés
140
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
1 novembre 2010
-
Bonjour
Alors voila j'ai créé une boite de dialogue personnalisée. Je l'ouvre depuis un formulaire. Et selon la réponse choisie je rempli un textbox de mon formulaire.

Voici mon code :

Dim formRechercheBeneficiaire As RechercheBeneficiaire = New RechercheBeneficiaire()
If MsgBox(formRechercheBeneficiaire) = MsgBoxResult.Ok Then
TxtRechercheIndividu.Text = getNumPers().ToString()
End If


Seulement j'ai une erreur : L'argument 'Prompt' ne peut pas être converti en type 'String'.

Quelqu'un peut-il m'aider ?

8 réponses

Messages postés
140
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
1 novembre 2010
6
Bonjour,
j'avais fait un truc comme cela, une fois, que je vais essayer de l'appliquer à votre cas.

Dans RechercheBeneficiaire je créerais une propriété du genre :
    ' Propriété pour exporter la valeur du DGV "DataGridView1".
    Property Exporter() As String
        Get
            Return CStr(DataGridView1.CurrentCell.Value)
        End Get
        Set(ByVal Value As String)
            DataGridView1.CurrentCell.Value = Value
        End Set
    End Property


Je traiterais les boutons de ce formulaire comme suit :
        ' DEFINIT le résultat renvoyé par les contrôles du formulaire.
    Private Sub btnOui_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnOui.Click
        Me.DialogResult = DialogResult.Yes
        'Me.Validate()
    End Sub

    Private Sub btnNon_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnNon.Click
        Me.DialogResult = DialogResult.Cancel
        'Me.Validate()
    End Sub


Enfin dans le formulaire principal, on initialise le messagebox d'entrée, puis dans le load,
on abonne les contrôles de "formRechercheBeneficiaire" à la procédure "RechercheBeneficiaire_Validated" qui traitera la réponse choisie.
Dans le genre suivant :
Public Class Form1 ' formulaire principal

    '*** Initialisation de "RechercheBeneficiaire" au lancement.
    Dim formRechercheBeneficiaire As RechercheBeneficiaire = New RechercheBeneficiaire()

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        '*** abonnement des contrôles de "formRechercheBeneficiaire" à la procédure ci dessous
        AddHandler formRechercheBeneficiaire.btnOui.Click, AddressOf RechercheBeneficiaire_Validated
        AddHandler formRechercheBeneficiaire.btnNon.Click, AddressOf RechercheBeneficiaire_Validated
    End Sub

    Private Sub RechercheBeneficiaire_Validated(ByVal sender As Object, ByVal e As System.EventArgs)
        ' GESTIONNAIRE de l'événement "Validated", selon le contrôle cliqué dans
        '  le formulaire "Message"

        Select Case formRechercheBeneficiaire.DialogResult
            Case DialogResult.Yes
               'Là on importe le texte de la cellule sélectionnée du DGV dans le textbox voulu.
                TxtRechercheIndividu.Text = formRechercheBeneficiaire.Exporter
                formRechercheBeneficiaire.Close()
            Case DialogResult.Cancel
                formRechercheBeneficiaire.Close()
                '*** Case etc...
        End Select
    End Sub

    '*** le button qui appelle "formRechercheBeneficiaire"
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        formRechercheBeneficiaire.Show()
    End Sub

End Class
Messages postés
453
Date d'inscription
dimanche 20 août 2006
Statut
Membre
Dernière intervention
11 janvier 2013
10
tu peux détaillé je ne comprend pas:
RechercheBeneficiaire qu'est ce que sa fait ,il y a quoi dedant

que cherche tu as faire
Messages postés
140
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
1 novembre 2010
6
Bonsoir,
c'est vrai que cela manque de détail.
Quel type de boite de dialogue ? Input, message, open file etc... ?
Mais pour une première approche le code devrait ressembler à cela :
        Dim formRechercheBeneficiaire As New RechercheBeneficiaire
        Dim Result As RechercheBeneficiaire.DialogResultat
        Result = formRechercheBeneficiaire.Show("paramètre 1", "paramètre 2", _
                 "Enfin tous les paramètres de la  boite personnalisée")
        If Result = Windows.Forms.DialogResult.Yes Then
            ' une chose
        Else
            ' une autre chose
        End If

Exemple pour une MessageBox en vb 2008.
Messages postés
453
Date d'inscription
dimanche 20 août 2006
Statut
Membre
Dernière intervention
11 janvier 2013
10
tu cherche que si tu clique sue oui ou non il se passe quelque chose.
Je n'est jamais chercher a personaliser la boite de dialog.

    If MessageBox.Show("toto", "ma texte box", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = Windows.Forms.DialogResult.Yes Then

        Else

        End If


Si tu veux afficher par exemple Nom et prenom a la place de "toto"
texbox1.text & textbox2.text

Il se peut que je reponde à coté de la plaque mais bon.
je ne c'est pas si tu auras toujours l'erreur 'Prompt' alors teste
Messages postés
16
Date d'inscription
vendredi 21 mai 2010
Statut
Membre
Dernière intervention
28 juillet 2010

Excusez moi de ne pas avoir été assez clair.

J'ai un formulaire où dans une textbox on entre des lettres. Lorsqu'on clic sur le bouton à coté on ouvre une boite de dialogue personnalisé qui s'appelle RechercheBeneficiaire qui elle, affiche un DataGridView avec les bénéficiaires dont le nom commence par le texte qui se trouve dans la textbox du formulaire.

Sur l'événement clic du bouton j'ouvre donc RechercheBeneficiaire :
Dim formRechercheBeneficiaire As RechercheBeneficiaire = New RechercheBeneficiaire()
formRechercheBeneficiaire.Show()


Puis une fois que l'utilisateur à cliquer sur le bouton 'ok' de ma boite de dialogue je voudrais récupérer le bénéficiaire sélectionné.

Mais la j'ai un soucis car je ne sais pas comment dire que le programme doit "attendre" la validation de la boite de dialogue pour récupérer mon bénéficiaire.

Suis-je plus clair ?
Messages postés
453
Date d'inscription
dimanche 20 août 2006
Statut
Membre
Dernière intervention
11 janvier 2013
10
c'est très clair maintenant .
Messages postés
16
Date d'inscription
vendredi 21 mai 2010
Statut
Membre
Dernière intervention
28 juillet 2010

Je ne peux pas mettre juste :

Case DialogResult.Yes
ou
Case DialogResult.Cancel


ça me met l'erreur : Une référence à un membre non partagé requiert une référence d'objet
Messages postés
140
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
1 novembre 2010
6
Non, car on attend la réponse de "formRechercheBeneficiaire"
A tester, le traitement par "if"
        If formRechercheBeneficiaire.DialogResult = Windows.Forms.DialogResult.Yes Then
            TxtRechercheIndividu.Text = formRechercheBeneficiaire.Exporter
            formRechercheBeneficiaire.Hide()
        End If

Mais à mon avis cela donnera le même message d'erreur.
Cette boite de message personnalisée est elle bien issue de l'ajout d'un formulaire windows qui lui est public donc accessible de toute l'application.
"formRechercheBeneficiaire" semble private dans votre cas.