Monter ou descendre d'un élement dans une ListBox

ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010 - 3 avril 2004 à 03:58
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 14 janv. 2016 à 10:50
Bonjour à tous !!!!!!!!!!!!!!!!!
Je voudrai monter ou descendre d'un élement dans une ListBox c'est à dire ex:
Bordeau
Paris
Nice
Marseille

en fait je voudrais soit monter ou descendre d'une ligne
l'élement sélectionné c'est à dire par exemple sélectionner Nice et en appuyant sur le bouton monter il doit se retrouvé devant Paris .
ou si je clique sur le bouton descendre il doit se retrouver après marseille

TRES IMPORTANT !!! J'utilise visual basic .net

je vous remercie bcp de votre aide car ca fai 3 jour que je cherche merci merci merci merci merci merci!!!!!!!!
A voir également:

8 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
3 avril 2004 à 20:01
Salut,

En .NET je ne sais pas mais en vb6 si tu fais :

List1.ListIndex = List1.ListIndex + 1 pour descendre
et
List1.ListIndex = List1.ListIndex - 1 pour remonter

ça devrai marcher.

Bien sûr, il faut contrôler que listindex siot > 0 et < list1.listcount-1

Si ça peut t'aider...

Cordialement

CanisLupus
1
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
4 avril 2004 à 09:16
Un listbox nommé ListBox1,
Un bouton nommé Command1
Un formulaire nommé Form1

Un clic sur la form pour charger la listbox et un clic sur le bouton pour déplacer l'élément sélectionné vers le haut. (Pour le bas, je te laisses faire, tu vas vite trouver)
*********************************

Private Sub CommandButton1_Click()
Dim s As String
Dim i As Integer
i = ListBox1.ListIndex
s = ListBox1.List(ListBox1.ListIndex) 'récupère l'élément sélectionné
ListBox1.RemoveItem i 'l'efface
If i <> 0 Then
ListBox1.AddItem s, i - 1
ListBox1.ListIndex = i - 1
End If
End Sub

Private Sub Form1_Click()
ListBox1.AddItem "tuiytiu"
ListBox1.AddItem "ghgffg"
ListBox1.AddItem "azaza"
ListBox1.AddItem "......."
ListBox1.AddItem "*******"
ListBox1.AddItem "°°°°°°°"

End Sub
**********************************

Manu
1
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
5 avril 2004 à 19:18
Pourquoi supprimer l'Item pour le recréer ensuite !!
En plus dans ton code, si le 1er item est sélectionner, tu le supprimes et après ... plus rien !!!
Private Sub CommandButton1_click()
Dim Buffer As String, Idx as Long

Idx = List1.ListIndex
If Idx >0 Then
  With List1
    Buffer = .List(Idx-1)
    .List(Idx-1) = .List(Idx)
    .List(Idx) = Buffer
  End With
End If


Christophe R.
1
ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010
3 avril 2004 à 23:36
Je te remercie bcp de ton aide mai je ne sais pas avec koi remplacé ListIndex (J'ai tout essayé)

je te remercie en tout cas
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
5 avril 2004 à 21:55
On peut même rajouter :

.Selected(Idx - 1) = True

pour permettre de remonter (ou descendre) l'item à chaque clic.

Cordialement

CanisLupus
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
6 avril 2004 à 09:35
Tout à fait mon p'tit loup !!

Christophe R.
0
schlumf68 Messages postés 2 Date d'inscription mercredi 13 janvier 2016 Statut Membre Dernière intervention 10 mars 2018
Modifié par schlumf68 le 13/01/2016 à 22:43
Bonsoir, voici mon code (visual studio m'affiche que l'exeption NullReferenceException n'a pas été géré. voir capture d'écran si ca fonctionne)
Public Class Form1
    Private Idx As Integer
    Public Property List1 As Object

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    End Sub

    Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs)

    End Sub

    Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click

    End Sub

    Private Sub VScrollBar1_Scroll(sender As Object, e As ScrollEventArgs)

    End Sub

    Private Sub HScrollBar1_Scroll(sender As Object, e As ScrollEventArgs)

    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        End
    End Sub
    Private Sub CommandButton2_click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim Buffer As String, Idx As Long

        Idx = List1.Index
        If Idx > 0 Then
            With List1
                Buffer = .List(Idx - 1)
                .Selected(Idx - 1) = True
                .List(Idx - 1) = .List(Idx)
                .List(Idx) = Buffer
            End With
        End If
    End Sub



    Private Sub ListBox1_SelectedIndexChanged_1(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged

    End Sub
End Class
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
Modifié par ucfoutu le 14/01/2016 à 06:42
Bonjour
Tu te greffes sur un post de 2006 !
Il aurait été préférable que tu ouvres ton propre post !

Public Property List1 As Object
: cette ligne ne doit pas être là ! List1 est la listbox qui est posée sur la Form : c'est un contrôle et nom une variable Property de classe !.

de plus tu déclares 2 fois idx : une fois en public en haut de la Form comme un Integer et une fois dans le CommandButton2_click comme Long

De plus on évite d'utiliser End pour la fin d'un programme ! Pour fermer la form
Me.Close() 
suffit largement
Enlèves aussi toutes les Sub sans code à l'intérieur
Par exemple
Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click

End Sub


Enfin les codes précédents sont en VB6 alors que toi tu es en VB NET
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 14/01/2016 à 08:38
Bonjour (et un salut à vb95),
A vb95 :
- j'ai modifié ton message pour y remettre dans le bon ordre Integer et Long, que tu y avais inversés
- qu'est, sous VB.Net, la propriété Index d'une listbox (je ne la trouve pas sur MSDN) ?
Et même sous VB6, Index ne pourrait qu'être l'index d'un groupe de contrôles indexés List1(0), List1(1), List1(2) .... etc ...
- je n'y trouve pas non plus (dans MSDN VB.Net) de propriété Selected, ni de propriété List

Tout le code montré me semble avoir été écrit au hasard, sans même avoir consulté MSDN

EDIT : j'ajoute que de toutes les réponses VB6 données avant le squat de schlumf68, seule celle de cs_CanisLupus correspondait à la demande formulée par ludovicanceaux
Il me semble (je ne suis pas VB.Nettiste) que schlum68 devrait, sous VB.Net, s'intéresser à ce qu'est la propriété SelectedIndex d'une listbox
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
14 janv. 2016 à 09:42
Bonjour à tous,

petite recherche sur Google:

http://www.dreamincode.net/forums/topic/155775-move-items-up-and-down-in-listbox/

ce qui donne:

Public Class Form1
    ' http://www.dreamincode.net/forums/topic/155775-move-items-up-and-down-in-listbox/
    'Up
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        If ListBox1.SelectedIndex > 0 Then
            Dim I = ListBox1.SelectedIndex - 1
            ListBox1.Items.Insert(I, ListBox1.SelectedItem)
            ListBox1.Items.RemoveAt(ListBox1.SelectedIndex)
            ListBox1.SelectedIndex = I
        End If
    End Sub
    'Down
    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        If ListBox1.SelectedIndex < ListBox1.Items.Count - 1 Then
            Dim I = ListBox1.SelectedIndex + 2
            ListBox1.Items.Insert(I, ListBox1.SelectedItem)
            ListBox1.Items.RemoveAt(ListBox1.SelectedIndex)
            ListBox1.SelectedIndex = I - 1
        End If
    End Sub
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dim i As Integer
        For i = 1 To 100
            ListBox1.Items.Add(i.ToString)
        Next i
    End Sub
End Class

0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 14/01/2016 à 10:53
Bonjour, Le Pivert,
pourquoi modifier l'ordre de la listbox ?
Si le m'en tiens à la dxemande originelle :
sous VB6, se serait pour descendre :
If List1.ListIndex < List1.ListCount - 1 Then List1.ListIndex = List1.ListIndex + 1

et pour monter :
If List1.ListIndex > 0 Then List1.ListIndex = List1.ListIndex - 1

Siç j'ai bien compris ce que je lis dans MSDN/VB.Net, cela devrait donner en VB.Net :
If List1.selectedIndex < List1.items.count - 1 Then List1.selectedIndex = List1.selectedIndex + 1
pour descendre et
If List1.selectedIndex > 0 Then List1.selectedIndex = List1.selectedIndex - 1

Je n'ai pas VB.Net pour tester mais parierais que cela suffit.

EDIT : Ah non ... TU as raison. Il veut également déplacer l'article. Mille excuses, donc.
0
Rejoignez-nous