none
Faire glisser une colonne de TexBox RRS feed

  • Question

  • Bonjour,

    Je travaille sur un programme qui place des lignes de trois texbox sur une colonne. Le nombre de lignes est variable et peut atteindre 100 ou même 200.

    Comment peut-on faire pour naviguer dans la colonne (montée descente) comme on peut le faire en EXCEL pour visualiser les cellules avec la règle de défilement ?

    Est-ce possible au moyen d'une Scrollbar et si oui quel est le code ?

    Sinon comment faire  ?

    Merci à qui voudra bien s'interresser à la question du débutant que je suis.

    mardi 13 novembre 2012 22:10

Réponses

  • Alors si j'ai bien compris vous voulez quelque chose du genre ?

    Si tel est le cas, il suffit d'insérer le contrôle FlowLayoutPanel

    Configurer les propriétés suivante :

    AutoScroll = True

    FlowDirection = TopDown

    WrapContents = False

    Padding = 5 ===> exemple

    Ensuite il faut ajouter les textbox dynamiquement (Code) dans le FlowLayoutPanel.

    Exemple :

    Je veux ajouter 30 textbox au chargement de mon application.

    Mon code sera comme suit :

        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            Dim max As Integer = 30
            Dim curPos As Integer = 0
            While curPos < max
                'Je fais un new textbox
                Dim _txtBox As TextBox = New TextBox()
                '_mTextBoxList.Padding = Windows.Forms.Padding.Add(New Padding(6), New Padding(6)) 'Faire une marge de 6px entre les éléments
                _txtBox.Width = _mTextBoxList.Width - 6 'définir une largeur maxi au contrôle père
                'Définir un événement à gérer (EXEMPLE)
                AddHandler _txtBox.TextChanged, AddressOf _txtBox_TextChanged
                _mTextBoxList.Controls.Add(_txtBox) 'ajouter dans la liste
    
                curPos += 1 'incrémenter le compteur
            End While
    
    
    
        End Sub
    
        Protected Sub _txtBox_TextChanged(sender As Object, e As EventArgs)
    
        End Sub
     

    Cordialement


    Merci de valider par "Proposer comme réponse" si celle-ci répond à votre demande !





    • Modifié Lyamine mercredi 14 novembre 2012 14:43
    • Marqué comme réponse jedry mercredi 14 novembre 2012 14:44
    mercredi 14 novembre 2012 14:13

Toutes les réponses

  • Bonjour,

    Vous parlez de VBA ?

    ou faire des automatismes "vsto" ?


    Cordialement,

    • Proposé comme réponse jedou lundi 4 février 2013 22:16
    mardi 13 novembre 2012 22:18
    Auteur de réponse
  • Merci d'avoir répondu si vite

    Mon programme est en VB NET. Je souhaiterai faire défiler mes textbox comme on peut faire défiler les cellules d'un feuille EXCEL

    Biencordialement

    • Proposé comme réponse jedou lundi 4 février 2013 22:16
    mardi 13 novembre 2012 22:29
  • Bonjour,

    Si vous appelez votre object Excel avec un Range sur la cellule cela serait il suffisant ?

     
    For i as Integer = 0 To 50
    
    objExcel.Range("A" & i).Select
    
    'vous pouvez aussi mettre un sleep pour faire une pause entre les selections 
    Next

     


    Cordialement,

    • Proposé comme réponse jedou lundi 4 février 2013 22:16
    mardi 13 novembre 2012 22:35
    Auteur de réponse
  • J'ai eu le temps de faire un petit exemple rapidement

        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            Dim excelApp As New Excel.Application
            Dim wb As Excel.Workbook = excelApp.Workbooks.Open(Application.StartupPath & "\monfichier.xlsx")
            excelApp.Visible = True
            Dim sheet As Excel.Worksheet = wb.Sheets(1)
            Dim r As Excel.Range = sheet.UsedRange
            For i As Integer = 1 To 50
                Application.DoEvents()
                r.Range("A" & i).Select()
                Threading.Thread.Sleep(1000)
            Next
        End Sub

    A vous de faire les adaptations

    Si ce n'est pas ce que vous voulez pourriez vous apportez des précision  sur "je souhaite faire défiler mes textbox"
    Pour que je comprenne bien ce que vous dites c'est que vous avez mis des textbox dans votre fichier excel (en mode multiligne ?) et vous souhaitez faire un défilement du contenu de votre textbox excel depuis un projet VB.NET ?


    Cordialement,

    • Proposé comme réponse jedou lundi 4 février 2013 22:16
    mardi 13 novembre 2012 22:53
    Auteur de réponse
  • Bonjour,

    Est-ce que vous souhaitez manipuler du Excel depuis VB .Net ? =>Oui, Essayez les propositions ci-dessus.

    Est-ce que vous souhaitez une grille dans votre application .Net ? => Oui, vous avez la possibilité d'utiliser GridView de .Net et le customiser pour le rendre grid.

    Est-ce que vous n'avez qu'un seul textbox et que vous souhaitez avoir le scrollbar de défilement ? => Oui, il faut mettre la propriété ScrollBars du contrôle à Both.

    Merci d'indiquer ce que vous recherchez parmi les questions ou de nous donner plus de détail sur votre demande.


    Merci de valider par "Proposer comme réponse" si celle-ci répond à votre demande !

    • Proposé comme réponse jedou lundi 4 février 2013 22:16
    mercredi 14 novembre 2012 07:26
  • Bonjour Troksa, Bonjour Lyamine

    J'ai mal posé ma question, je vous prie de m'en excuser, j'ai cité EXCEL seulement pour tenter d'imager ce que je veux faire, mais pas pour l'utiliser.

    J'oublie EXCEL et je reprends ma question à zéro, en programmant avec VB NET seul

    Mon programme consiste à inscrire les noms des participants à un concours. J'utilise une textbox uniligne par personne. Chaque textbox reçoit un nom et seulement ce nom. Le nombre de noms et par suite le nombre de textbox est variable et peut atteindre 100 ou 200

    Les textbox se rangent en colonne au fur et à mesure de l'inscription et la colonne remonte d'une textbox lorsque je suis à la vingtième inscription, de sorte que l'écran affiche les textbox 1 à 20, puis 2 à 21, puis 3 à 22, ainsi de suite.  

    Est-il possible avec une Vscrollbar de naviguer dans la colonne, pour, par exemple, accéder à la textbox 25 alors que l'écran affiche les textbox 62 à 71 ?

    Si oui, comment écrire le code ? Si non, y-at-il un autre moyen ?

    Merci d'avance

    • Proposé comme réponse jedou lundi 4 février 2013 22:16
    mercredi 14 novembre 2012 10:14
  • Alors si j'ai bien compris vous voulez quelque chose du genre ?

    Si tel est le cas, il suffit d'insérer le contrôle FlowLayoutPanel

    Configurer les propriétés suivante :

    AutoScroll = True

    FlowDirection = TopDown

    WrapContents = False

    Padding = 5 ===> exemple

    Ensuite il faut ajouter les textbox dynamiquement (Code) dans le FlowLayoutPanel.

    Exemple :

    Je veux ajouter 30 textbox au chargement de mon application.

    Mon code sera comme suit :

        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            Dim max As Integer = 30
            Dim curPos As Integer = 0
            While curPos < max
                'Je fais un new textbox
                Dim _txtBox As TextBox = New TextBox()
                '_mTextBoxList.Padding = Windows.Forms.Padding.Add(New Padding(6), New Padding(6)) 'Faire une marge de 6px entre les éléments
                _txtBox.Width = _mTextBoxList.Width - 6 'définir une largeur maxi au contrôle père
                'Définir un événement à gérer (EXEMPLE)
                AddHandler _txtBox.TextChanged, AddressOf _txtBox_TextChanged
                _mTextBoxList.Controls.Add(_txtBox) 'ajouter dans la liste
    
                curPos += 1 'incrémenter le compteur
            End While
    
    
    
        End Sub
    
        Protected Sub _txtBox_TextChanged(sender As Object, e As EventArgs)
    
        End Sub
     

    Cordialement


    Merci de valider par "Proposer comme réponse" si celle-ci répond à votre demande !





    • Modifié Lyamine mercredi 14 novembre 2012 14:43
    • Marqué comme réponse jedry mercredi 14 novembre 2012 14:44
    mercredi 14 novembre 2012 14:13
  • Merci Lyamine

    C'est exactement ce que je veux faire.

    Je n'ai plus qu'à écrire le code.

    Un grand et chaleureux merci !

    • Proposé comme réponse jedou lundi 4 février 2013 22:17
    mercredi 14 novembre 2012 14:48
  • Bonjour,

    Ou comme suggéré également par Lyamine un contrôle DataGridView pourrait être plus adapté (c'est une grille de saisie avec des lignes et éventuellement plusieurs colonnes).

    Voir par exemple l'image présente sur la page http://www.dotnetperls.com/datagridview pour voir à quoi ressemble ce contrôle...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    • Proposé comme réponse jedou mercredi 14 novembre 2012 17:18
    mercredi 14 novembre 2012 16:38
    Modérateur
  • Bonsoir Patrice Scribe

    Je vais essayer cette solution également.

    Merci de vous être interessé a ma question

    mercredi 14 novembre 2012 17:24