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.
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 ' ... |
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 |
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 |
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 |
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 çaLes 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.