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

Windows Forms Discussion :

Création d'un Datagridview custom et colonne custom


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 259
    Points : 90
    Points
    90
    Par défaut Création d'un Datagridview custom et colonne custom
    Bonjour,

    je veux 'créer' un dtgv personalisé et aussi des colonnes personnalisées (genre avec un format datetime comme expliqué ici : http://msdn2.microsoft.com/fr-fr/lib...80(VS.80).aspx)

    je fais donc avec VS 2008, ajouter->nouvel elemnt->class component ? Avec tous ces choix je m'y perd un peu...

    Si je fais ce que j'ai dis au début j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    namespace WindowsFormsApplication1
    {
        public partial class dataGridViewCustum : Component
    ne devrais-je pas plutôt mettre ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    namespace WindowsFormsApplication1
    {
        public partial class dataGridViewCustum : DataGridView
        {
            public dataGridViewCustum()
    En fait ce que je voudrais réaliser c'est une un datagridview dont les headers des colonnes acceptent des icones (indiquant le sens du tri). Et que cela marche si la colonne est de type combobox,datetime,...
    Dois je passer par un datagridview ou datagridviewcolumn ?

    Si par hasard j'arrive a faire ma colonne perso, est-ce possible de l'utiliser dans un dtgv dont les colonnes sont générées automatiquement ? par quel biais ?


    Merci !!

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 259
    Points : 90
    Points
    90
    Par défaut
    VOici ce que j'ai créé :
    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
    namespace WindowsFormsApplication1
    {
        public partial class dataGridViewCustum : DataGridView
        {
            public dataGridViewCustum()
            {
                InitializeComponent();
            }
     
            public dataGridViewCustum(IContainer container)
            {
                container.Add(this);
     
                InitializeComponent();
            }
            protected override void OnPaint(PaintEventArgs e)
            { MessageBox.Show("coucou"); }
        }
    }
    le truc c'est qu'a l'execution j'ai une inifi de messagebox.
    Le Datagridview est donc rafraichi constament ?? Si je veux mettre un icone, il sera rechargé constament aussi alors .; ? Ca bouffe pas un peu trop de ressource ? je dois mal faire...

  3. #3
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    un datagridview dont les headers des colonnes acceptent des icones (indiquant le sens du tri).
    Ca existe en standard. Pourquoi faire du custom ?
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 259
    Points : 90
    Points
    90
    Par défaut
    ah ? j'ai pas trouvé !!!! Comment tu fais ?

  5. #5
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Comme ceci pour 1 colonne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MyDataGridView1.Columns["Nom_de_colonne"].SortMode =
        DataGridViewColumnSortMode.Automatic;
    ou pour toutes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for {int i=0;i<MyDataGridView1.Columns.Count;i++}  
      MyDataGridView1.Columns[i].SortMode =
        DataGridViewColumnSortMode.Automatic;
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 259
    Points : 90
    Points
    90
    Par défaut
    J'ai deja mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                for (int j = 0; j < liste.Columns.Count; j++)
                { liste.Columns[j].SortMode = DataGridViewColumnSortMode.Programmatic; }
    car je fais un tri perso sur plusieures colonnes . Ceci en fonction de l'ordre des clic de souris sur les en tetes de colonnes par l'utilisateur.
    Je met un numéro dans l'en tete de colonne pour savoir l'ordre de tri des colonnes, mais l'utilisateur n'a pas de moyen de savoir le sens. Sauf dans la premiere colonne.

    Du coup je voudrais afficher sur chaque colonne cliquée le sens du tri. Avec l'icone par défaut, ou une icone perso... Mais je ne vois pas comment faire. Ya pas de ColumnHeader.Image = ....
    Faut faire sa propre classe datagridview dérivée ou datagridviewcolumn ?

    Du coup mon code pour le moment donne ça :
    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
     
    namespace WindowsFormsApplication1
    {
        public partial class dataGridViewCustum : DataGridView
        {
            public dataGridViewCustum()
            {
                InitializeComponent();
            }
     
     
     
            public dataGridViewCustum(IContainer container)
            {
                container.Add(this);
     
                InitializeComponent();
            }
            /*protected override void OnPaint(PaintEventArgs e)
            { 
               // MessageBox.Show("coucou");
            }*/
        }
     
        public class ColumnHeaderIcon : DataGridViewColumnHeaderCell
        {
           /* protected override void OnPaint(PaintEventArgs e)
            {
                 MessageBox.Show("coucou");
            }*/
        }
     
    }
    je ne sais pas si je suis dans la bonne direction..Mais Comment je fais pour que mon datagridviewcusom, prenne en compte ma columnheadercell custom ?
    Images attachées Images attachées  

  7. #7
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    En tous cas, pas besoin de surcharger la DataGridView : surcharger la DatGridViewColumn, voire même seulement la HeaderCell suffit.
    ಠ_ಠ

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 259
    Points : 90
    Points
    90
    Par défaut
    Je désespere de pouvoir mettre un jour un icone dans le header d'une colonne au moment d'un clic de souris...

Discussions similaires

  1. Création de table avec nom de colonne dynamique
    Par jibileg dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 03/12/2007, 22h13
  2. DatagridView et multi-Colonnes
    Par guilig dans le forum C#
    Réponses: 3
    Dernier message: 19/04/2007, 21h13
  3. DataGridView : titre de colonne verticale
    Par A2rem dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/04/2007, 20h48

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