IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

TableLayoutPanel - Problème avec taille de ligne


Sujet :

VB.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 335
    Points : 111
    Points
    111
    Par défaut TableLayoutPanel - Problème avec taille de ligne
    Bonjour à tous,

    Je lutte avec la taille de ligne d'un TableLayoutPanel.

    Croissance AddRows

    Mes lignes vont par paires

    Si je passe d'un nombre de ligne supérieur à 2, à 2, la deuxièmeest étiré en hauteur et le chart dessus egalement.

    Je n'arrive pas a controler la hauteur de ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For Each row As RowStyle In Me.PartSetupChange_tlp.RowStyles
                row.SizeType = SizeType.Absolute
                row.Height = 300
            Next
    Ne semble pas être çà car il ne compte qu'une ligne....

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Je conseille vivement une solution radicale : ne pas utiliser ce contrôle pourri
    A chaque fois que j'ai essayé d'utiliser un TableLayoutPanel, j'ai fini par renoncer parce que c'est trop galère d'obtenir le résultat qu'on veut...

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 335
    Points : 111
    Points
    111
    Par défaut

  4. #4
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 442
    Points
    4 442
    Par défaut tablelayoutpanel,controle peu maniable
    bonjour gualino
    Comme l'as bien soulgne Tomlev,ce controle est peu maniable et decevant.
    Entre autres defauts, le fait que la collection styles est "apparie" implicitement à la collection des rows ce qu'il faut deviner ou lire entre les lignes c.à.d que le rowstyle d'indice -10- correspond à la row 10.........caramba !.
    Ensuite l'acces a hauteur de ligne-I- se fait donc par ta TableLayoutPanel.RowStyles(i)
    Et puis on peut l'acceder par aussi cet fonction :
    -TableLayoutPanel1.GetRowHeight(i) ( tableau d'entier) qui donne la hauteur de la ligne -i- (mais attention... pas le style)
    Mais cet fonction curieusement n'apparait pas dans l'intellisense....et il faut fouiner dans MSDN Doc pour la retrouver...bizarrerie de ce controle.........................

    code avec 2 formes :
    -le 1er par commodite comprend le tablelayoutpanel a tester
    -le 2eme avec 2 button (premier button liste les lignes ,leur style et hauteur ,2eme button "sette" la hauteur des rows impairs superieur 1 comme voulu).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
     
    '1er forme de test du panel
    Imports System.Windows.Forms
    Public Class frmTLPanel
    	Friend WithEvents TLP As TableLayoutPanel
    	Public Sub New()
     
    		' Cet appel est requis par le Concepteur Windows Form.
    		InitializeComponent()
     
    		' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
    		Me.TLP = New TableLayoutPanel
    		Me.TLP.RowCount = 10
    		Dim style As RowStyle
    		Dim labelTest As New Label
     
    		Dim rndHeight As Random = New Random
    		MessageBox.Show(Me.TLP.RowStyles.Count.ToString)
    		For numRow As Integer = 0 To Me.TLP.RowCount - 1
    			Dim reste As Integer = 0
    			Math.DivRem(numRow, 2, reste)
    			If numRow > 1 And reste = 0 Then 'ligne impaire >1
    				labelTest = New Label
    				labelTest.Text = "myRow"
    				labelTest.Height = 80
    				labelTest.BackColor = Color.Yellow
    				labelTest.Dock = DockStyle.Fill
    				Me.TLP.Controls.Add(labelTest, 0, numRow)
     
    				style = New RowStyle
    				style.SizeType = SizeType.Absolute
    				style.Height = rndHeight.Next(50, 70)
    				Me.TLP.RowStyles.Add(style)
    			Else
    				labelTest = New Label
    				labelTest.Text = "myRow"
    				labelTest.Height = 80
    				labelTest.BackColor = Color.Red
    				labelTest.Dock = DockStyle.Fill
    				Me.TLP.Controls.Add(labelTest, 0, numRow)
     
    				style = New RowStyle
    				style.SizeType = SizeType.Percent
    				style.Height = rndHeight.Next(50, 50)
    				Me.TLP.RowStyles.Add(style)
     
    			End If
    		Next
    		'docker
    		Me.TLP.Dock = DockStyle.Fill
    		Me.TLP.AutoScroll = True
    		'grille visible
    		Me.TLP.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single
    		'GrowStyle
    		Me.TLP.GrowStyle = TableLayoutPanelGrowStyle.AddRows
     
     
     
    		'add to form
    		Me.Controls.Add(Me.TLP)
    		Me.AutoScroll = True
    	End Sub
    	Public Sub AdjustRowHeightTableLayoutPanel()
     
    		Dim styles As TableLayoutRowStyleCollection = Me.TLP.RowStyles
     
    		For i As Integer = 0 To styles.Count - 1
    			If styles(i).SizeType = SizeType.Absolute And i > 2 Then
    				' Set the row height to 60 pixels.
    				styles(i).Height = 60
    			End If
    		Next
     
    	End Sub
     
     
    End Class
     
    '2eme forme avec 2 buttons
    Public Class Form1
    	Private maForme As frmTLPanel = New frmTLPanel
    	'liste les rows existants
    	Private Sub btnDisplayHeightRows_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisplayHeightRows.Click
    		'affiche le form 
    		maForme.Show()
     
    		'obtient hauteur des lignes
    		Dim heightRows() As Integer = maForme.TLP.GetRowHeights
    		'obtient styles des lignes
    		Dim styles As TableLayoutRowStyleCollection = maForme.TLP.RowStyles
     
    		For i As Integer = 0 To maForme.TLP.RowCount - 1
    			Me.ListBoxRowHeight.Items.Add("ligne" & (i + 1).ToString & " :" & heightRows(i).ToString & "style : " & styles(i).SizeType.ToString)
    		Next
     
     
    	End Sub
    	'sette  les rows impairs
    	Private Sub btnSetHeightRows_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSetHeightRows.Click
     
     
    		Dim styles As TableLayoutRowStyleCollection = maForme.TLP.RowStyles
     
    		Me.ListBoxSetRowHeight.Items.Add("nb styles: " & styles.Count.ToString)
    		Me.ListBoxSetRowHeight.Items.Add(vbCrLf)
    		For i As Integer = 0 To styles.Count - 1
    			If styles(i).SizeType = SizeType.Absolute And i > 2 Then
    				' Set the row height to 150 pixels.
    				styles(i).Height = 150
    				Me.ListBoxSetRowHeight.Items.Add("row n° : " & (i + 1).ToString & " - " & styles(i).SizeType.ToString & " - " & styles(i).Height.ToString)
    			End If
    		Next
    	End Sub
    End Class
    bon code................

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 335
    Points : 111
    Points
    111
    Par défaut
    J'ai fait un essais rapide mais sans succès.

    J'y reviendrai un peu plus tard.

Discussions similaires

  1. Problème avec taille de tableau et checkbox
    Par narcis60floyjo dans le forum Langage
    Réponses: 5
    Dernier message: 31/03/2008, 16h13
  2. Problème avec taille de Internet Temporary Files
    Par tarbala dans le forum Windows XP
    Réponses: 6
    Dernier message: 10/09/2007, 19h45
  3. [utilitaire bcp]problème avec retour à la ligne
    Par m-mas dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/05/2007, 15h10
  4. Tableau avec scroll: problème avec la dernière ligne
    Par restricteur dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 24/05/2007, 13h47
  5. [JTable][TableCellRenderer]Problèmes avec coloriage de ligne
    Par Baptiste Wicht dans le forum Composants
    Réponses: 7
    Dernier message: 11/02/2006, 09h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo