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 :

creer un DatagridView type


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 60
    Par défaut creer un DatagridView type
    Bonjour le forum,

    je souhaiterais savoir si il est possible de creer un datagridview type sous vb.net un peu de la meme maniere que l'on cree une datatable typee ("strongly Typed Datatable")

    En effet, ceci me permettrait de mettre tout les attributs de mon Datagridview dans cette nouvelle classe et d'eviter d'avoir a surcharger le code de mon application en appellant directement le Datagridview type.

    Pour situer mon probleme, j'ai creer une DataRow typee, puis un datatable typee en m'inspirant de l'exemple ci-dessous:
    http://www.codeproject.com/KB/databa...DataTable.aspx

    Pour mon Datagrid, j'ai essaye de coder comme ci-dessous mais mon programme bloque sur les noms de colonne

    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
     
    Public Class PricingDataGrid
     
        Inherits System.Windows.Forms.DataGridView
     
        Public Sub New()
     
            'Setup The DatagridView
            Dim ColumnHeaderStyle As New DataGridViewCellStyle
            ColumnHeaderStyle.Font = New Font("Arial", 8, FontStyle.Bold, GraphicsUnit.Point)
            ColumnHeaderStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
     
            For Each Column As DataGridViewColumn In Me.Columns
                Column.HeaderCell.Style = ColumnHeaderStyle
                Column.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
                Column.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
            Next Column
     
            With Me
                .Columns("Strikes").DefaultCellStyle.BackColor = Color.LightGray
                .Columns("Strikes").DefaultCellStyle.Font = New Font("Arial", 8, FontStyle.Bold, GraphicsUnit.Point)
                .Columns("Put Fair Value").DefaultCellStyle.BackColor = Color.LightBlue
                .Columns("Put Fair Value").DefaultCellStyle.Font = New Font("Arial", 8, FontStyle.Bold, GraphicsUnit.Point)
                .Columns("Call Fair Value").DefaultCellStyle.BackColor = Color.LightYellow
                .Columns("Call Fair Value").DefaultCellStyle.Font = New Font("Arial", 8, FontStyle.Bold, GraphicsUnit.Point)
                .ReadOnly = True
                .AllowDrop = False
                .RowHeadersVisible = False
                .AllowUserToAddRows = False
                .AllowUserToResizeRows = False
                .AllowUserToDeleteRows = False
                .AllowUserToOrderColumns = False
                .AllowUserToResizeColumns = False
            End With
     
        End Sub
     
    End Class
    En pieces jointes, j'ai attache les classes que j'ai crees, si elles peuvent etre d'utilite a quelqu'un.

    Si vous pouviez m'aider ce serait tres sympa.

    Merci par avance

    Anthony
    Fichiers attachés Fichiers attachés

  2. #2
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut datagridview personalise
    bonjour anthony
    c'est bon mais il y a un petit hic dans ton code .Tu as oublie par etourderie ou precipation d'ajouter les colonnes avant de les personnaliser.
    Maintenant mettre tout ca dans un classe me parait un peu difficile à l'utilisation enfin.Pourquoi pas un usercontrol
    voici ton classe revu :

    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
     
    'Pas besoin d'heriter de datagridview pour ce que tu veux faire
    'sinon fais un usercontrol avec "mappage" des proprietes UserControl 
    'sur ton DataGridView incorpore
    Public Class PricingDataGridView
        Private mControlPrice As DataGridView
        Public Sub New()
            Me.mControlPrice = New DataGridView
            'Reset du Nombre de colonne
            Me.mControlPrice.ColumnCount = 0
            Call SetupPricingDataGridView()
        End Sub
        'un prop publique est necessaire pour acceder à ton controle perso
        Public Property ControlPrice() As DataGridView
            Get
                Return Me.mControlPrice
            End Get
            Set(ByVal value As DataGridView)
                Me.mControlPrice = value
            End Set
        End Property
     
        Private Sub SetupPricingDataGridView()
            'Add Three Columns
            With Me.mControlPrice
                .Columns.Add("Strikes", "Strikes")
                .Columns.Add("Put Fair Value", "Put Fair Value")
                .Columns.Add("Call Fair Value", "Call Fair Value")
            End With
     
            'Setup The DatagridView
            Dim ColumnHeaderStyle As New DataGridViewCellStyle
            ColumnHeaderStyle.Font = New Font("Arial", 8, FontStyle.Bold, GraphicsUnit.Point)
            ColumnHeaderStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
     
            For Each Column As DataGridViewColumn In Me.mControlPrice.Columns
                Column.HeaderCell.Style = ColumnHeaderStyle
                Column.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
                Column.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
            Next Column
     
     
            With Me.mControlPrice
                .Columns("Strikes").DefaultCellStyle.BackColor = Color.LightGray
                .Columns("Strikes").DefaultCellStyle.Font = New Font("Arial", 8, FontStyle.Bold, GraphicsUnit.Point)
                .Columns("Put Fair Value").DefaultCellStyle.BackColor = Color.LightBlue
                .Columns("Put Fair Value").DefaultCellStyle.Font = New Font("Arial", 8, FontStyle.Bold, GraphicsUnit.Point)
                .Columns("Call Fair Value").DefaultCellStyle.BackColor = Color.LightYellow
                .Columns("Call Fair Value").DefaultCellStyle.Font = New Font("Arial", 8, FontStyle.Bold, GraphicsUnit.Point)
                .ReadOnly = True
                .AllowDrop = False
                .RowHeadersVisible = False
                .AllowUserToAddRows = False
                .AllowUserToResizeRows = False
                .AllowUserToDeleteRows = False
                .AllowUserToOrderColumns = False
                .AllowUserToResizeColumns = False
            End With
     
        End Sub
     
    End Class
     
    'Utilisation dans form2
    Public Class Form2
        Private mDGV As PricingDataGridView
        Public Sub New()
     
            ' Cet appel est requis par le Concepteur Windows Form.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
     
            Me.mDGV = New PricingDataGridView
            Me.mDGV.ControlPrice.Dock = DockStyle.Top
            Me.Controls.Add(Me.mDGV.ControlPrice)
     
        End Sub
    End Class
    Sous forme d'un UserControl plus manipulable voici le code:
    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
     
    Imports System.ComponentModel
    Imports System.ComponentModel.Design
     
    Public Class UserControlDGV
        Private mPricingDataGridView As DataGridView
        Public Sub New()
     
            ' Cet appel est requis par le Concepteur Windows Form.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
            Me.SuspendLayout()
            Me.mPricingDataGridView = New DataGridView
            'Reset nb colonnes
            Me.mPricingDataGridView.ColumnCount = 0
            'Appel Setup
            Call SetupPricingDataGridView()
            mPricingDataGridView.Dock = DockStyle.Fill
            Me.Controls.Add(Me.mPricingDataGridView)
            Me.ResumeLayout()
        End Sub
        'Un prop publique est necessaire pour acceder à ton controle perso
        'dans designer et dans code
        <Category("DGV"), _
             Description("PricingDataGridView"), _
             DesignerSerializationVisibility(DesignerSerializationVisibility.Visible), Localizable(True)> _
        Public Property PricingDataGridView() As DataGridView
            Get
                Return Me.mPricingDataGridView
            End Get
            Set(ByVal value As DataGridView)
                Me.mPricingDataGridView = value
            End Set
        End Property
        Public Sub SetupPricingDataGridView()
     
            'Add Three Columns
            With Me.mPricingDataGridView
                .Columns.Add("Strikes", "Strikes")
                .Columns.Add("Put Fair Value", "Put Fair Value")
                .Columns.Add("Call Fair Value", "Call Fair Value")
            End With
            'Setup The DatagridView
            Dim ColumnHeaderStyle As New DataGridViewCellStyle
            ColumnHeaderStyle.Font = New Font("Arial", 8, FontStyle.Bold, GraphicsUnit.Point)
            ColumnHeaderStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
     
            For Each Column As DataGridViewColumn In Me.mPricingDataGridView.Columns
                Column.HeaderCell.Style = ColumnHeaderStyle
                Column.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
                Column.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
            Next Column
     
     
            With Me.mPricingDataGridView
                .Columns("Strikes").DefaultCellStyle.BackColor = Color.LightGray
                .Columns("Strikes").DefaultCellStyle.Font = New Font("Arial", 8, FontStyle.Bold, GraphicsUnit.Point)
                .Columns("Put Fair Value").DefaultCellStyle.BackColor = Color.LightBlue
                .Columns("Put Fair Value").DefaultCellStyle.Font = New Font("Arial", 8, FontStyle.Bold, GraphicsUnit.Point)
                .Columns("Call Fair Value").DefaultCellStyle.BackColor = Color.LightYellow
                .Columns("Call Fair Value").DefaultCellStyle.Font = New Font("Arial", 8, FontStyle.Bold, GraphicsUnit.Point)
                .ReadOnly = True
                .AllowDrop = False
                .RowHeadersVisible = False
                .AllowUserToAddRows = False
                .AllowUserToResizeRows = False
                .AllowUserToDeleteRows = False
                .AllowUserToOrderColumns = False
                .AllowUserToResizeColumns = False
            End With
     
        End Sub
     
    End Class
    bon code.....

Discussions similaires

  1. [Prototype] Créer un input type file quand je clique sur un lien
    Par movemedia dans le forum Bibliothèques & Frameworks
    Réponses: 5
    Dernier message: 22/04/2008, 10h58
  2. creer ses propres type de données
    Par charlie_p07 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 14/04/2008, 17h22
  3. creer un project type
    Par ninours23 dans le forum Eclipse C & C++
    Réponses: 0
    Dernier message: 28/02/2008, 13h57
  4. fonction acts_as_tree pour creer un arbre type organigramme
    Par jbarre dans le forum Ruby on Rails
    Réponses: 3
    Dernier message: 24/04/2007, 23h55
  5. [LG] Comment créer un nouveau type ??
    Par freestyler1982 dans le forum Langage
    Réponses: 2
    Dernier message: 21/12/2005, 10h02

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