Problème avec ListBox.ScrollIntoView ( VB 2015, WPF )

Messages postés
2
Date d'inscription
samedi 23 septembre 2017
Dernière intervention
24 septembre 2017
- - Dernière réponse : Whismeril
Messages postés
12396
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 décembre 2018
- 24 sept. 2017 à 20:26
Bonjour,


Public Sub Display(St As String)

With WinMain.Log
While .Items.Count >= MaxLogSize
.Items.RemoveAt(0)
End While
.Items.Add(St)
.ScrollIntoView(.Items(.Items.Count - 1))
End With

End Sub


A priori c'est tout simple : je veux que le dernier item ajouté à la listbox Log soit toujours visible, mais le déroulement vertical ne se fait pas et la listbox reste calée sur le premier item.
Pouvez-vous m'aider ?

Merci d'avance.
Afficher la suite 

Votre réponse

4 réponses

Messages postés
1728
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 décembre 2018
0
Merci
Bonsoir

Listbox1.TopIndex(ListBox1.Items.Count - 1)


plus d'information ici : https://msdn.microsoft.com/fr-fr/library/system.windows.forms.listbox.topindex(v=vs.110).aspx
Whismeril
Messages postés
12396
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 décembre 2018
-
Bonsoir
la propriété TopIndex n'existe pas en wpf
vb95
Messages postés
1728
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 décembre 2018
> Whismeril
Messages postés
12396
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 décembre 2018
-
Salut Whis
Il y a déjà 4 VB
- VBA
- VBscript
- VB6
- VB Net

Si maintenant il y a 2 VB Net ( un "Normal" et un en wpf )
Cela ne facilite guère les choses à mon avis
Whismeril
Messages postés
12396
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 décembre 2018
> vb95
Messages postés
1728
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 décembre 2018
-
En fait WPF existe depuis 2008, mais il cible plutôt les codeurs C#.
Commenter la réponse de vb95
Messages postés
12396
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 décembre 2018
0
Merci
Bonsoir,

j'ai mis un bouton qui fait ça
        Private ligne As Integer = 1
        Private Sub Button_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
            lst.Items.Add(String.Format("Ligne {0:00}", ligne))
            ligne += 1
            lst.ScrollIntoView(lst.Items(lst.Items.Count - 1))
        End Sub

Ça fonctionne bien, mon "dernier" item est toujours visible.

J'ai ensuite adapté ton code
    Private Sub Button2_Click(sender As Object, e As RoutedEventArgs)
        With lst
            While .Items.Count >= 20
                .Items.RemoveAt(0)
            End While
            .Items.Add("dernier")
            .ScrollIntoView(.Items(.Items.Count - 1))
        End With
    End Sub

Et ça marche aussi, mon "dernier" item est toujours visible.

Donc ce code est bon.
Qu'est ce qui appelle cette méthode?

Commenter la réponse de Whismeril
Messages postés
2
Date d'inscription
samedi 23 septembre 2017
Dernière intervention
24 septembre 2017
0
Merci
Merci, Whismeril.

Ce code est appelé par un module de l'application et pas par un évènement.
Mais je commence à me lasser de WPF, que je trouve inutilement complexe pour ce que j'ai à faire et assez mal documenté, pour VB en tous les cas.

Merci à tous pour vos réponses, en tous les cas :-)
Whismeril
Messages postés
12396
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 décembre 2018
-
Ça n'est pas vraiment plus complexe que winforms, mais il est impératif de penser objet, binding et MVC , or avec
.Items.Add(St)
t'en est encore à VB6 (c'est pas un reproche, mais une constatation).

Oui c'est mal documenté pour VB, car ce sont les codeurs C# qui le réclamaient.

En C++, on peut donner le design à faire à une équipe de designer et le code métier à une équipe de codeurs. En winform ça n'est pas possible. Alors les sociétés qui payent rubis sur l'ongle les licences annuelles de chacun de leur collaborateurs (associés ou employés) ont vite fait comprendre à Microsoft qu'il s'agissait d'une régression inacceptable et qu'à défaut de régler le problème, elles iraient voir ailleurs.

WPF a donc été créé pour ces pros, et documenté en C#.

VB.Net lui cible les anciens "VB6istes", et les amateurs (au bon sens du termes), mais comme c'est une sorte de skin de C#, WPF existe aussi, pas ou peu documenté.
Commenter la réponse de thierry_st_malo
Messages postés
12396
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 décembre 2018
0
Merci
Pour ton problème, cela pourrait venir d'un problème cross thread, ou d'autre chose.
Donc quel est le code de ce module?
Commenter la réponse de Whismeril

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.