IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

FAQ VB.NETConsultez toutes les FAQ

Nombre d'auteurs : 37, nombre de questions : 240, dernière mise à jour : 12 mai 2018  Ajouter une question

 

Cette FAQ a été réalisée pour répondre aux questions les plus fréquemment posées sur le forum Développement DotNET

Je tiens à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle contient sont correctes. Les auteurs font le maximum, mais l'erreur est humaine. Si vous trouvez une erreur, ou que vous souhaitez devenir rédacteur, lisez ceci.

Sur ce, je vous souhaite une bonne lecture.

SommaireWinFormsComboBox (4)
précédent sommaire suivant
 

Ce code permet de remplir rapidement un contrôle ComboBox avec un DataReader. Il nécessite un contrôle ComboBox nommé ici « ComboBox1 »

Code vb.net : Sélectionner tout
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
Imports System 
Imports System.Data 
Imports System.Data.SqlClient 
Imports System.Windows.Forms 
  
' ... 
Dim con As SqlConnection = Nothing 
Dim command As SqlCommand = Nothing 
Dim cs As String = " la chaine de connexion SQL" 
Dim dr As SqlDataReader = Nothing 
  
Try 
    con = New SqlConnection(cs) 
    command = New SqlCommand("SELECT champ FROM Table",con) 
  
    ' Ouvrir la connexion 
    con.Open() 
    dr = command.ExecuteReader() 
  
    ' Vider le ComboBox 
    ComboBox1.Items.Clear() 
  
    If dr.HasRows Then 
        ' Tant que le DataReader a une ligne d'enregistrements 
        While dr.Read 
        ' Ajouter la donnée au ComboBox 
        ComboBox1.Items.Add(dr.GetValue(0)) 
        End While 
        Else 
        MessageBox.Show("No result for your Data", "Infos", 
        MessageBoxButtons.OK, MessageBoxIcon.Information) 
    End If 
Catch ex As Exception 
    MessageBox.Show(ex.Message) 
Finally 
    If Not (dr Is Nothing) Then dr.Close() 
    If Not (con Is Nothing) Then con.Close() 
End Try 
  
' ...

Mis à jour le 30 octobre 2013 HULK

Il faut appeler la méthode FindString sur l'évènement TextChanged du ComboBox :

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
Private Sub ComboBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.TextChanged 
    If Me.ComboBox1.FindString(Me.ComboBox1.Text) > 0 Then 
        Dim Pos As Int32 = Me.ComboBox1.Text.Length 
        Me.ComboBox1.SelectedIndex = Me.ComboBox1.FindString(Me.ComboBox1.Text) 
        Me.ComboBox1.SelectionStart = Pos 
        Me.ComboBox1.SelectionLength = Me.ComboBox1.Text.Length - Pos 
    End If 
End Sub

Mis à jour le 30 octobre 2013 bidou

C'est une manipulation assez simple, puisqu'on peut directement manipuler la collection items. Le code ci-dessous supprime l'élément sélectionné si vous appuyez sur Del ou ajoute l'élément entré dans la zone de texte si vous appuyez sur Enter :

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
9
Private Sub ComboBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles ComboBox1.KeyDown 
    If e.KeyCode = Keys.Delete Then 
        If ComboBox1.Items.Contains(Me.ComboBox1.Text) Then 
            Me.ComboBox1.Items.Remove(Me.ComboBox1.Text) 
        End If 
    ElseIf e.KeyCode = Keys.Enter AndAlso Not ComboBox1.Items.Contains(Me.ComboBox1.Text) Then 
        Me.ComboBox1.Items.Add(Me.ComboBox1.Text) 
    End If 
End Sub

Mis à jour le 30 octobre 2013 bidou

Remarque : Pour calculer une taille de chaine, vous devez créer un objet Graphics.
C'est objets doivent toujours être explicitement libérés.

Pour agrandir la zone de liste, vous devez calculer la taille du plus grand élément, par exemple sur l'évènement DropDown :

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
Private Sub ComboBox1_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.DropDown 
    Dim MonEnum As IEnumerator = Me.ComboBox1.Items.GetEnumerator 
    Dim g As Drawing.Graphics = Me.ComboBox1.CreateGraphics 
    Dim Taille, MaxTaille As Single 
    While MonEnum.MoveNext 
        Taille = g.MeasureString(CType(MonEnum.Current, String), Me.ComboBox1.Font).Width 
        If MaxTaille < Taille Then MaxTaille = Taille 
    End While 
    g.Dispose() 
    Me.ComboBox1.DropDownWidth = CInt(MaxTaille) + 20 
End Sub

Mis à jour le 30 octobre 2013 bidou

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.