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 :

deplacement horizontal dans un datagrigview avec la touche entrer


Sujet :

VB.NET

  1. #21
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    il suffit de choper le combobox (event enteredit surement, enfin y a un event avec e.control d'accessible)
    si typeof is combobox then tu le stock dans une variable, et sur le processcmdkey, si la variable n'est pas nothing, tu validates le combobox, puis tu déplaces ta zone, puis tu mets nothing dans la variable

    je tenterais d'écrire le code demain si tu ne trouves pas
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  2. #22
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Par défaut
    Merci de m'avoir repondu.

    Le soucis c'est que je n'arrive pas a localiser la valeur affiché.

    Elle n'est ni dans .value, ni dans la cellule, ni dans selected

    Je pense qu'elle est dans le control crée par le DGV mais qu'elle doit passer dans la cellule qu'une fois validé par le DGV sur clic par exemple.

    quand on se déplace avec la fleche bas on voit bien que la valeur change, mais pas moyen d'aller la récupérer.

    Autre info:
    une des combobox a comme source une datatable
    si je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Cbx_NomBanque.DisplayMember = "NomBanque"
                Cbx_NomBanque.ValueMember = "NomBanque"
    cela m'affiche une erreur me disant que la valeur du combobox n'est pas valide. Mais ca passe a la cellule suivante et place la bonne valeur dans la combobox (soit celle qui n'est pas valide)

    si je mets juste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                Cbx_NomBanque.DisplayMember = "NomBanque"
    ca marchouille comme je l'ai dis plus haut

  3. #23
    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 custom control mydatagrid avec Enter transforme en Tab
    bonjour gilles_906
    On y est presque avec ProcessDataGridViewKey ET ProcessDialogKey mais plus simple encore si on les "overriden" dans un custom datagridview
    voici un datagrid qui transforme le Enter en Tab mais quid du Tab.....
    snippet code qui marche à merveille:
    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
     
    Class MyDataGridView
    	Inherits DataGridView
     
     
    	Protected Overloads Overrides Function ProcessDialogKey(ByVal keyData As Keys) As Boolean
     
    		If keyData = Keys.Enter Then
     
    			MyBase.ProcessTabKey(Keys.Tab)
    			Return True
     
    		End If
     
    		Return MyBase.ProcessDialogKey(keyData)
    	End Function
     
     
     
    	Protected Overloads Overrides Function ProcessDataGridViewKey(ByVal e As KeyEventArgs) As Boolean
     
    		If e.KeyCode = Keys.Enter Then
     
    			MyBase.ProcessTabKey(Keys.Tab)
    			Return True
     
    		End If
     
    		Return MyBase.ProcessDataGridViewKey(e)
    	End Function
     
     
     
    End Class
     
    'winform de test 
    Public Class Form3
    	Dim testDataTable As DataTable
     
    	Private Sub btnCreeDataTable_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCreeDataTable.Click
    		'Cree DataTable test
    		testDataTable = New DataTable
    		'Cree 3 colonnes
    		Dim nomCol As String = String.Empty
    		nomCol = "Nom"
    		AddColumn(nomCol, testDataTable)
    		nomCol = "Prenom"
    		AddColumn(nomCol, testDataTable)
    		nomCol = "Adresse"
    		AddColumn(nomCol, testDataTable)
     
    		'Fill avec 5 rows
    		Dim dr As DataRow
    		For i As Integer = 0 To 5
    			dr = testDataTable.NewRow
    			dr.Item(0) = "Nom" & (i + 1).ToString
    			dr.Item(1) = "Prenom" & (i + 1).ToString
    			dr.Item(2) = "Adresse" & (i + 1).ToString
    			testDataTable.Rows.Add(dr)
    		Next
     
    		'Binding à MyDataGridView1
    		Me.MyDataGridView1.DataSource = testDataTable
     
    		'binding a 2 TextBox
    		'
    		Me.txtNom.DataBindings.Add("Text", testDataTable, "Nom")
    		Me.txtPrenom.DataBindings.Add("Text", testDataTable, "Prenom")
     
    		'binding a un listbox(idem pour combobox)
    		'
    		Me.lstAdresse.DataSource = testDataTable
    		Me.lstAdresse.DisplayMember = "Adresse"
    		Me.lstAdresse.ValueMember = "Adresse"
    	End Sub
    	Private Sub AddColumn(ByVal colName As String, ByVal dt As DataTable)
    		Dim col As DataColumn = New DataColumn
    		col.Caption = colName
    		col.ColumnName = colName
    		col.DataType = GetType(String)
    		dt.Columns.Add(col)
    	End Sub
    End Class
    bon code................

  4. #24
    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 derouter Enter vers Touche Home-Droite au lieu de Tab
    rebonjour gilles_906
    Dans le meme sillage et toujours de source MSDN Doc voici un autre snippet qui deroute enter vers la touche home-droite,ce qui va sans dire, qu'on ne perds pas le benefice de la touche Tab qui permet de naviguer en vertical.
    Toujours preconise par MSDN un simple custom control DataGriew:

    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 CustomDataGridView
        Inherits DataGridView
     
        <System.Security.Permissions.UIPermission( _
            System.Security.Permissions.SecurityAction.LinkDemand, _
            Window:=System.Security.Permissions.UIPermissionWindow.AllWindows)> _
        Protected Overrides Function ProcessDialogKey( _
            ByVal keyData As Keys) As Boolean
     
            ' Extract the key code from the key value. 
            Dim key As Keys = keyData And Keys.KeyCode
     
            ' Handle the ENTER key as if it were a RIGHT ARROW key. 
            If key = Keys.Enter Then
                Return Me.ProcessRightKey(keyData)
            End If
     
            Return MyBase.ProcessDialogKey(keyData)
     
        End Function
     
        <System.Security.Permissions.SecurityPermission( _
            System.Security.Permissions.SecurityAction.LinkDemand, Flags:= _
            System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)> _
        Protected Overrides Function ProcessDataGridViewKey( _
            ByVal e As System.Windows.Forms.KeyEventArgs) As Boolean
     
            ' Handle the ENTER key as if it were a RIGHT ARROW key. 
            If e.KeyCode = Keys.Enter Then
                Return Me.ProcessRightKey(e.KeyData)
            End If
     
            Return MyBase.ProcessDataGridViewKey(e)
     
        End Function
     
    End Class
    bon soiree.............et bon code..........

  5. #25
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Par défaut
    Merci MABROUKI de te pencher aussi sur ce probleme.

    Je n'ai pas encore bien décortiqué ton code mais ce uqe tu veux faire est remplacer la touche "enter" par la touche "tab".

    Apparement comme tu dis il y a du mieux

    Mais regarde par exemple:

    Premiere ligne tu mets ce que tu veux
    deuxieme ligne quand tu arrives sur la combobox, la valeur de la combobox de la ligne precedente est affiché et surligné.
    Si tu appuie sur TAB rien ne reste dans la combobox. Je pense que c'est cette valeur surligné qu'il faut réussir a intercepter

    EDIT: je n'avais pas vu ta deuxieme reponse avant mon post, je viens d'essayer avec la touche droite, idem qu'avec la touche TAB

  6. #26
    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
    bonjour gilles
    Par défaut lorsque l'on appuie sur la touche "enter" lors de la saisie dans un datagridview cela fait passer a la ligne suivante.
    J'aimerai que cela passe a la cellule suivante pour continuer la saisie.
    Cest bien ca,ce qui permet de naviguer à la verticale
    Ce que tu ignores ou oublies c'est que aussi :
    par defaut lorsque l'on appuie sur la touche "tab" lors de la saisie dans un datagridview cela fait passer a la cellule suivante. et par consequent ce qui veut c'est le "tab" qui le fait par defaut....

    Le but du code que j'ai donne en premier est justement de substituer au "tab" le "enter" ,ce faisant le "enter" maintenant fait passer à la cellule suivante au lieu que ce soit le "tab"...

    Par ailleurs tu as du bien constater que la egalement -par defaut pour reprendre tes termes le Home-Droite fait passer à la cellule suivante - tant et si bien que nous avons maintenant 2 options :
    - soit le "enter" prends la place du "tab"(1er code)
    - soit le "enter" prends la place du home-droite (2eme code)...
    Dans les 2 cas on joue à qui perd-gagne.
    Dans le premier cas :nous voila enrichi de cet "enter" qui avance à l'horizontale mais mais de l'autre on a perdu ce "tab" qui fait la meme chose....revers de medaille...
    Dans le 2eme cas on peut en dire autant de "enter" et de "home-droite"........
    c'est la loi de maratre nature .....
    Tout avantage a un cout (ou en francais algerien c'est l'inconvenient de l'avantage....)....................

    Bon code..............

  7. #27
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Par défaut
    Merci de ta réponse MABROUKI

    J'avais bien compris ce que faisait ton code
    Ce que je vais essayer de comprendre c'est comment il le fait, car je ne suis pas trés familiarisé avec ces instructions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Protected Overrides
    et
    Inherits
    Par contre ce que je ne comprends pas c'est pourquoi tu dis que l'on perd l'usage du TAB?
    Pour moi d'aprés ton code la touche "enter" aura la même fonction la touche "TAB", c'est d’ailleurs ce que je voulais (sauf dans certain cas voir post plus haut ou cela ne prend pas en compte ce qu'il y a dans la cellule). Mais la touche "TAB garde sa fonction"
    Je vais essayer ca ce matin je reviendrais donner le résultat.

  8. #28
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Par défaut
    Bonjour

    J'ai un probleme avec ta class CustomDataGridView

    Voici ce que j'ai fais:
    J'ai ajouté une class nommé CustomDataGridView
    J'ai collé ton code dedans.
    J'ai regenéré le projet.

    Et la j'ai une erreur dans le concepteur a cet endroit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
       'Requise par le Concepteur Windows Form
        Private components As System.ComponentModel.IContainer
    
        'REMARQUE*: la procédure suivante est requise par le Concepteur Windows Form
        'Elle peut être modifiée à l'aide du Concepteur Windows Form.  
        'Ne la modifiez pas à l'aide de l'éditeur de code.
        <System.Diagnostics.DebuggerStepThrough()> _
        Private Sub InitializeComponent()
            components = New System.ComponentModel.Container()
            Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
        End Sub
    qui me dit:

    Le concepteur ne peut pas traiter le code de la ligne 25:

    Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font


    Le code dans la méthode 'InitializeComponent' est généré par le concepteur et ne doit pas être modifié manuellement.
    Comme je n'ai pas acces au mode design vu qu'il y a une erreur dans le concepteur je ne sais pas trop quoi faire

  9. #29
    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 erreur designer dans designer
    bonjour gilles
    Pour l'erreur dans le Designer,ton form est abime suite à une erreur de manipulation car le code exact du designer pour un form genere normalement et non abime devrait etre le suivant comme tu peux t'en rendre compte en creant un nouveau form et en inspectant le code du designer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    'Form1
    		'
    		Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
    		Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
    		Me.ClientSize = New System.Drawing.Size(292, 266)
    		Me.Controls.Add(Me.MyCustomDataGridView1)
    		Me.Name = "Form1"
    		Me.Text = "Form1"
    		Me.ResumeLayout(False)
    Cela se produit quand on fait des manipulations incorrectes dans un projet et n' a rien à voir avec le CustomDataGridView.......

    La solution c'est de repondre continuer au message et de recreer son form à zero.......


    Maintenant excuse-moi tu as raison ,c'est bien remarque , on ne perds pas le "tab" effectivement ni la touche "home droite" mais on perds quand meme quelque chose comme toujours :
    -tu ne peux plus avancer à la "verticale" avec "enter" surtout si la ligne dans le datagridview est ....longue avec beaucoup de champs....

    En fait j'ai repondu trop vite par reflexe d'experience sachant que l'on gagne toujours un avantage au detriment d'un autre (ou de plusieurs) ....c'est tout dit et il faut savoir se compromettre parfois.....

    Pour ce qui est du terme "Inherits" :signifie qu'on herite du controle DataGridView (ou aussi bien TextBox ,combobox...etc) c.à.d que notre controle sera un Sosie du controle DataGridView
    Mais pourquoi un Sosie ? c'est inutile ,aurais-tu dit puisqu'on a deja le control DataGridView.
    C'est là qu'intervient le terme "Overrides" qui veut dire "se substitue à" .
    Mais il permet de modifier un comportement particulier -une methode ,une propriete par exemple du Sosie -en ecrivant du code dedans.
    Ce code ecrit par nos soins annulera ce que fait cette methode par defaut (dans notre cas nous avons modifie 2 methodes ou sub et modifier le traitement par defaut de la touche Enter).
    Notre controle est un sosie du DataGridView sauf pour ce qui est de la touche Enter que ......seul gilles connait. Tout autre s'y meprendrait...
    Sans don ce code modifie rien ne sert d'heriter.

    Cette facon de faire c'est qu'on appelle creer un controle personnalise...
    Les methodes substituables sont nombreuse.
    Il suffit de taper protected overrides dans CustomDataGridview pour voir leur liste dans l'intellisene......
    Voila qui j'espere te donnera de l'appetit pour personnaliser tes controles..............

  10. #30
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Bonjour,
    avec un form neuf et tout en mode Design :
    - je pose un Dgv nommé DGV_Remise.
    - A qui j'ajoute 5 colonnes à la volée.
    - je modifie la 2ième en type Comboboxcolomn et remplis ses Items de ta collection (bonjour, ...bravo,...Cuicui).
    Je colle ensuite, dans la classe du form Form1, le code de mon post précédent à savoir :
    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
    Public Class Form1
     
        ' INTERFACE
        Private Sub DGV_Remise_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles DGV_Remise.CellValidating
     
            IfCellModeEdit(DGV_Remise, e)
     
        End Sub
     
        Private Sub DGV_Remise_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles DGV_Remise.KeyDown
     
            IfDgvKeyDown(DGV_Remise, Nothing, e)
     
        End Sub
     
     
        ' METIER
        Private row As Integer
        Private column As Integer
        Private keyIsEnter As Boolean = False
     
        Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
     
            If keyData = Keys.Enter Then
                keyIsEnter = True
            Else
                keyIsEnter = False
                Return MyBase.ProcessCmdKey(msg, keyData)
            End If
     
        End Function
     
        Private Sub IfCellModeEdit(ByVal DGV As DataGridView, ByVal cellValidEvent As DataGridViewCellValidatingEventArgs)
     
            If DGV.IsCurrentCellInEditMode And keyIsEnter = True Then
                DGV.EndEdit()
                keyIsEnter = False
                row = DGV.CurrentCell.RowIndex
                column = DGV.CurrentCell.ColumnIndex
                column += 1
                If column = DGV.ColumnCount Then
                    row += 1
                    column = 0
                End If
                DGV.CurrentCell = DGV.Rows(row).Cells(column)
                cellValidEvent.Cancel = True
            End If
     
        End Sub
     
        Private Sub IfDgvKeyDown(ByVal DGV As DataGridView, ByVal BdgSource As BindingSource, ByVal keyEvent As System.Windows.Forms.KeyEventArgs)
     
            If keyEvent.KeyCode = Keys.Enter Then
                row = DGV.CurrentCell.RowIndex
                column = DGV.CurrentCell.ColumnIndex
                column += 1
                If column = DGV.ColumnCount Then
                    row += 1
                    If row = DGV.Rows.Count Then
                        If row = DGV.RowCount Then
                            If DGV.DataSource IsNot Nothing Then
                                BdgSource.AddNew()
                            Else
                                DGV.Rows.Add()
                            End If
                        End If
                    End If
                    column = 0
                End If
     
                DGV.CurrentCell = DGV.Rows(row).Cells(column)
                keyEvent.Handled = True
            End If
     
        End Sub
    End Class
    Il semble très bien fonctionner dans tous les cas de figure (je suis sous : XP, VS 2008).
    Tu peux déjà essayer de tester cela, afin de voir si ce code fonctionne chez toi.

  11. #31
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Par défaut
    Merci MABROUKI

    Trés interressant en effet de pouvoir modifier un control.

    Pour ce qui est de l'erreur, j'ai supprimé le paragraphe, et maintenant ca marche

    De toute manière un control datagridview n'a pas de propriété AutoScaleMode et la c'est me.AutoScaleMode hors, il n'y a pas de formulaire puisque c'est un control que l'on fait.
    J'ai refais plusieurs fois le control a chaque fois j'avais l'erreur.

    chrismonoye, j'essaie dans la journée et je te donne le resultat. Perso je suis sous win7 64bits

  12. #32
    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 creer un control perso et heritage
    bonjour gilles
    L'erreur que tu as signalee vient de la facon de creer un controle perso.
    Le designer n'aime pas cette facon de faire:
    -creer un classe ,coller du code d'un control personnalise et generer.
    Voici comment il faut procede dans les regles de l'art du designer:

    1/Explor.Solution->Ajouter un Nouvel element->Window Form->Control Personnalise ->Ok

    2/Taper sous classe "Inherits DataGridView(car par defaut il "inherits" plutot de Control), .
    Un genre de Tooltips souligné apparait et si on clique dessus il nous dit voulez-vous modifier pour qu'il herite de datagridview .On repond oui.

    3/
    -Soit Renommer notre controle CustomDataGridView car l'auteur du code a renommer son controle et ses sub avec ce nom.....CustomDataGridView
    -Soit laisser le nom CustomControl1 et plus bas dans une ligne en dessous vide:
    -taper "Protected Overrides Process.... et choisir la procedure ProcessDialogKey dans intellissense et click...
    -idem pour ProcessDataGridViewKey
    -copier coller delicatement le code communique dans chaque procedure concernee....
    -generer.................
    Et voila comment travailler "proprement" avec le designer pour eviter au designer de "gueuler" et "warner".................
    bon code........

  13. #33
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Par défaut
    Bonjour MABROUKI

    Merci de ta reponse
    Je viens de faire comme tu m'as dit:

    Projet : ajouter un formulaire windows : controle utilisateur

    Il me fait le control

    Clique droit sur le control => afficher le code et j'ai ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Class UserControl1
     
     
    End Class
    Je rajoute
    Inherits DataGridView
    La j'ai bien une erreur et il me propose d’hériter de la class DataGridView, je clique

    et j'ai mon erreur qui revient:

    Par contre j'ai fais dans le designer "generer stub de propriété pour AutoScaleMode dans monprojet.customdatagridview" et maintenant je n'ai plus d'erreur.

    Par contre j'ai ca dans ma class

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Class CustomDataGridView
        Inherits DataGridView
     
        Private Property AutoScaleMode As AutoScaleMode
     
     
    End Class
    J'ai du faire quelque chose qu'il ne fallait pas, pourtant je n'ai pas encore collé le code

  14. #34
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    Citation Envoyé par gilles_906 Voir le message
    Je viens de faire comme tu m'as dit:

    Projet : ajouter un formulaire windows : controle utilisateur

    non, il n'a pas dit controle utilisateur mais controle personnalisé
    ce sont 2 choses différentes
    un controle utilisateur (usercontrol) est une composition de controles existants (comme un form), il y a un rendu graphique dans vs et un initializecomponent
    un controle personnalisé est un controle seul, il n'y a pas de rendu dans vs car celui ci est fait par code (drawrectangle, drawstring et autres dans la méthode paint) et donc pas d'initializecomponent

    tu peux le faire dans un fichier de classe simple aussi
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  15. #35
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Par défaut
    Oups je ne l'avais pas vu celui la.
    Effectivement cela marche mieux maintenant, merci a tous les deux.

    Mais quel est la différence entre ces deux controls?

  16. #36
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    j'ai édité pour expliquer la différence
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  17. #37
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Par défaut
    Merci pour l'explication, je comprends mieux pourquoi il me mettait un autoscalemode en fait il le mettait sur le formulaire contenant mon customdatagridview, et comme le formulaire n'était pas crée dans le code ca plantait

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/12/2011, 14h28
  2. Réponses: 2
    Dernier message: 24/11/2006, 08h54
  3. valider formulaire avec la touche 'entrer'
    Par mikees dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 06/07/2006, 17h51
  4. [VB6] Problème avec la touche 0 dans une MaskEdBox
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 02/03/2006, 09h47
  5. Comment se déplacer avec la touche tab dans un dbGrid ?
    Par bertrand_declerck dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/09/2005, 15h36

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