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 :

[VBNET]Combobox récupérer l'élément sélectionné par la souris


Sujet :

Windows Forms

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut [VBNET]Combobox récupérer l'élément sélectionné par la souris
    Bonjour à tous,

    Lorsqu'on ouvre un combobox, il affiche la liste des éléments qu'il contient. En passant la souris au dessus des différentes lignes, l'élémentde la liste qui se trouve sous la souris devient bleu.

    Peut-on, quand une ligne devient bleue, lancer un événement et récupérer l'item de cette ligne ?

    Merci

  2. #2
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Je ne pense pas que l'on puisse il faut cliquer sur l'element pour déclancher l'évenement mais regarde dans la liste des evenements de ta combobox, il y a peut etre un event du type OnMouseHover...

    Cdl

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    Merci,

    J'ai mis un beep dans onMouseHover et celà sonne quand je passe sur la zone d'encodage de mon combo mais seulement quand il n'est pas ouvert. Dès qu'il est ouvert, ça ne sonne plus nulle part.

  4. #4
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Citation Envoyé par Golzinne Voir le message
    Merci,

    J'ai mis un beep dans onMouseHover et celà sonne quand je passe sur la zone d'encodage de mon combo mais seulement quand il n'est pas ouvert. Dès qu'il est ouvert, ça ne sonne plus nulle part.
    Ca ne doit pas etre le bon event...

  5. #5
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour.

    C'est peut être bêbête comme solution mais en se cablant sur le ondrawitem on doit pouvoir faire ça puisque le passage de la souris sur l'item déclenche le redessin de celui-ci...

    Mais bof, personnellement je passerai plutôt par les messages windows.

    Cdt.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    Salut,

    Je n'ai pas d'événement OnDrawItem sur les combo. Je ne peux donc pas tester ta solution. Merci quand même.

  7. #7
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    J'ai testé les 3/4 des events et aucun ne correspond à ce que tu veux. Il va donc falloir biaiser...

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    As-tu une piste pour "biaiser" ? je dis bien biaiser !

  9. #9
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Pas pour l'instant mais deja tu peux le faire avec l'event qui controle la molette de la souris. Sinon il faut obligatoirement un clique ou une pression sur une touche !

    Autre méthode mais je ne sais pas si c'est possible est de surcharger le control COmboBox et de créer toi meme l'event "OnMouseHover"

  10. #10
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour.

    Oups, j'ai manqué de précision sur ce coup là !

    Il faut que tu te fasses un combo personnalisé qui dessine lui même ses items, et là tu fais ce que tu veux dans le drawitem.

    Une exemple à 20 cents (j'ai pas poussé les tests à fond !!!) :
    Code : 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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    Public Class Form6
     
        Private Sub Form6_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
     
            Dim dt1 As New DataTable
            dt1.Columns.Add("Col1")
     
            dt1.Rows.Add("Val1")
            dt1.Rows.Add("Val2")
            dt1.Rows.Add("Val3")
            dt1.Rows.Add("Val4")
     
            Me.MonComboBebete1.DataSource = dt1
            Me.MonComboBebete1.ValueMember = "Col1"
            Me.MonComboBebete1.DisplayMember = "Col1"
     
        End Sub
     
        Private Sub MonComboBebete1_dropdownListItemChanged(ByVal value As String) Handles MonComboBebete1.dropdownListItemChanged
     
            Me.TextBox1.Text = value
     
        End Sub
     
    End Class
     
    Public Class MonComboBebete
        Inherits ComboBox
     
        Dim idx As Integer = -2
        Public Event dropdownListItemChanged(ByVal Value As String)
     
        Public Sub New()
     
            Me.DrawMode = Windows.Forms.DrawMode.OwnerDrawFixed
     
        End Sub
     
        Private Sub H_DrawItem(ByVal sender As Object, _
      ByVal e As System.Windows.Forms.DrawItemEventArgs) _
      Handles Me.DrawItem
     
            Try
     
                If e.Index < 0 Then Exit Sub
     
                Dim strValue As String
                strValue = CStr(CType(Me.DataSource, DataTable).Rows(e.Index).Item(0))
     
                '
                ' Couleur de fond : si sélectionné, dégradé, sinon on laisse faire
                '
                If (e.State And DrawItemState.Selected) = DrawItemState.Selected Then
                    Dim backbrush As New _
                        System.Drawing.Drawing2D.LinearGradientBrush(e.Bounds, _
                        Color.LightBlue, _
                        Color.DarkBlue, _
                        System.Drawing.Drawing2D.LinearGradientMode.Horizontal)
                    e.Graphics.FillRectangle(backbrush, e.Bounds)
                    If e.Index <> idx Then
                        RaiseEvent dropdownListItemChanged(strValue)
                    End If
                    idx = e.Index
                Else
                    e.DrawBackground()
                End If
     
                Dim dtTable As DataTable = CType(Me.DataSource, DataTable)
                Dim sngWidth As Single = 0
     
                ' Text de la colonne
                If (e.State And DrawItemState.Selected) = DrawItemState.Selected Then
                    e.Graphics.DrawString(strValue, Me.Font, System.Drawing.Brushes.White, e.Bounds)
                Else
                    e.Graphics.DrawString(strValue, Me.Font, System.Drawing.Brushes.DarkBlue, e.Bounds)
                End If
     
                ' Focus
                e.DrawFocusRectangle()
     
            Catch ex As Exception
                MsgBox("erreur")
            End Try
     
        End Sub
     
    End Class
    Nota : c'est une form avec un textbox et un moncombobebete.

    Cdt.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    Sur quel compte dois-je verser les 20 cents ?

    J'ai pris un petit peu de temps mais j'ai testé ton code et ça marche super. J'ai pas encore tout compris car cela à l'air d'être de la haute voltige, mais je vais étudier ça en détail.

    Pour ceux que ça intéresse, j'ai du ajouter avant la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Form6_load....
    le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim WithEvents myCboBb as New MonComboBebete
    et j'ai du dans le reste du code remplacer MonComboBebete par myCboBb pour ce qui est du datasource, ValueMember et displaymember.

    Bravo à toi et merci

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

Discussions similaires

  1. <s:select /> - Récupérer les éléments sélectionnés
    Par leblanc.philippe dans le forum Struts 2
    Réponses: 3
    Dernier message: 20/01/2009, 17h47
  2. récupérer l'élément sélectionné d'une liste
    Par kcizth dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 21/03/2008, 19h58
  3. Réponses: 1
    Dernier message: 07/03/2008, 08h49
  4. Récupérer l'élément sélectionné dans un GtkTree
    Par slasher-fun dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 07/03/2007, 17h33
  5. Réponses: 6
    Dernier message: 18/04/2006, 09h25

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