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

thierry_st_malo Messages postés 2 Date d'inscription samedi 23 septembre 2017 Statut Membre Dernière intervention 24 septembre 2017 - 23 sept. 2017 à 18:16
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 - 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.

4 réponses

vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
23 sept. 2017 à 18:51
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
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
23 sept. 2017 à 22:43
Bonsoir
la propriété TopIndex n'existe pas en wpf
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169 > Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024
24 sept. 2017 à 00:27
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
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656 > vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024
24 sept. 2017 à 08:03
En fait WPF existe depuis 2008, mais il cible plutôt les codeurs C#.
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
23 sept. 2017 à 23:04
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?

0
thierry_st_malo Messages postés 2 Date d'inscription samedi 23 septembre 2017 Statut Membre Dernière intervention 24 septembre 2017
Modifié le 24 sept. 2017 à 11:25
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 :-)
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
24 sept. 2017 à 20:25
Ç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é.
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
24 sept. 2017 à 20:26
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?
0
Rejoignez-nous