Progressbar dans listview en vb.net

Soyez le premier à donner votre avis sur cette source.

Snippet vu 19 376 fois - Téléchargée 32 fois

Contenu du snippet

Voici une petite fonction qui ajoute une ProgressBar dans une ListView sur le ListViewItem souhaité et la colonne souhaitée.
Faîtes toute fois attention car je n'ai pas inclus de contrôle sur les index que l'on donne ni sur d'éventuelles erreurs...

Source / Exemple :


Public Function ListView_AddProgressBar(ByRef pListView As System.Windows.Forms.ListView, ByVal ListViewItemIndex As Integer, ByVal ColumnIndex As Integer) As System.Windows.Forms.ProgressBar
        Dim r As Rectangle
        Dim pb As New System.Windows.Forms.ProgressBar

        r = pListView.Items(ListViewItemIndex).Bounds()
        r.Width = pListView.Columns(ColumnIndex).Width
        If ColumnIndex > 0 Then
            r.X = r.X + pListView.Columns(ColumnIndex - 1).Width
        End If
        pb.Parent = pListView
        pb.SetBounds(r.X, r.Y, r.Width, r.Height)
        pb.Visible = True

        Return pb
    End Function

A voir également

Ajouter un commentaire

Commentaires

cs_Benouille
Messages postés
216
Date d'inscription
jeudi 24 octobre 2002
Statut
Membre
Dernière intervention
7 septembre 2007
1 -
exellent!
GLLNS
Messages postés
4
Date d'inscription
jeudi 26 décembre 2002
Statut
Membre
Dernière intervention
15 juin 2005
-
Thanks
cs_innosoft
Messages postés
1
Date d'inscription
jeudi 8 avril 2004
Statut
Membre
Dernière intervention
11 juillet 2005
-
good
vingaboy
Messages postés
1
Date d'inscription
samedi 29 mars 2003
Statut
Membre
Dernière intervention
9 août 2005
-
Salut, je trouve le code simple et ca donne l'opportunité d'ajouter d'autre type control comme ComboBox et TrackBar et bien d'autre...

Apres avoir tester le code et réussi, j'ai trouver des problèms, il s'agit du redimension de la colonne en dessous duquel il y'a le progressbar, j'ai cherché un événement pour le redimensionnement d'une colone de ListView mais y'en a pas???
Aussi un autre probleme, c'est lorsque j'ai plusieur lignes, et chaque ligne à son propre progressbar, le positionnemt des progressbar rest static ca change pas lors du défilement des lignes, également j'ai pas trouver l'événement du defiliment des ligne parmi les evenement du ListView???

Je souhaite que quelque à une idée!!!
winsave
Messages postés
21
Date d'inscription
mercredi 1 janvier 2003
Statut
Membre
Dernière intervention
1 septembre 2005
-
Mon idée est de redimentionner sur MouseMove.

'// Déclarations :
Private curLi As ListViewItem
Private curProgressGlobale As System.Windows.Forms.ProgressBar
Private CollProgressbarGlobales As New Collection

private sub TestIt
'// 2 colonnes par exemples
curLi = ListView1.Items.Add("Test")
curLi.SubItems.Add("") 'progression bar
curLi.SubItems.Add("0 %") '%

'// on récupére curProgressGlobale pour traitement ultérieur
curProgressGlobale = ListView_AddProgressBar(ListView1, curLi.Index, 1, CollProgressbarGlobales)

end sub

Public Function ListView_AddProgressBar(ByRef pListView As System.Windows.Forms.ListView, ByVal ListViewItemIndex As Integer, ByVal ColumnIndex As Integer, ByRef CollProgressbar As Collection) As System.Windows.Forms.ProgressBar
Dim r As Rectangle
Dim pb As New System.Windows.Forms.ProgressBar
Try
r = pListView.Items(ListViewItemIndex).Bounds()
r.Width = pListView.Columns(ColumnIndex).Width
If ColumnIndex > 0 Then
r.X = r.X + pListView.Columns(ColumnIndex - 1).Width
End If
pb.Parent = pListView
pb.SetBounds(r.X, r.Y, r.Width, r.Height)
pb.Visible = True
If Not pb Is Nothing Then
CollProgressbar.Add(pb)
End If
Catch exc As Exception
MsgBox(exc.Message, MsgBoxStyle.Critical)
End Try
Return pb
End Function


Private Sub ListView1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs)
ResizeProgressbars(CollProgressbarGlobales)
End Sub

Private Sub ResizeProgressbars(ByRef CollProgressbar As Collection)
'// on redimentionne l'ensemble
If Not CollProgressbar Is Nothing Then
Dim curEnum As IEnumerator
Dim CurProgress As ProgressBar
curEnum = CollProgressbar.GetEnumerator
While curEnum.MoveNext
CurProgress = curEnum.Current()
CurProgress.Left = ListView1.Columns(0).Width + 5
CurProgress.Width = ListView1.Columns(1).Width - 5
End While
End If

End Sub


Voili voilou ; par contre l'ajout de deux progressbar sur le même item semble poser pb.

Sam.
http://www.c6pratik.com

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (FreeZeBiT)