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

C# Discussion :

Création d'une grille de loto [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 7
    Par défaut Création d'une grille de loto
    Bonjour,

    Suite à mon topic http://www.developpez.net/forums/d12...l/#post6740554 Je souhaiterai réaliser une grille de loto.
    J'ai commencé par réaliser un tableau à deux dimensions de 5 par 10. Cependant je n'arrive pas à l'afficher sur mon deuxième formulaire.

    Voici le code de ma classe grille :

    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
    class Tab_grille
        {
            int[,] Tabgrille = new int[5,10];
            //Ajoute un tableau grille
            public int[,] Montab()
            {
                int li, col;
     
                for (li = 0; li <= 9; li++)
                {
                    for (col = 0; col <= 4; col++)
                    {
                         Tabgrille[li, col] = 0;
                    }
                }
                return (Tabgrille);
            }
        }
    code du form2.cs :
    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
    public partial class Form2 : Form
        {
            private Label lbl_grille;
            Tab_grille unegrille = new Tab_grille();
            private void InitializeComponent()
            {
                this.lbl_grille = new System.Windows.Forms.Label();
                this.SuspendLayout();
                // 
                // lbl_grille
                // 
                this.lbl_grille.Location = new System.Drawing.Point(54, 84);
                this.lbl_grille.Name = "lbl_grille";
                this.lbl_grille.Size = new System.Drawing.Size(255, 332);
                this.lbl_grille.TabIndex = 0;
                // 
                // Form2
                // 
                this.ClientSize = new System.Drawing.Size(1199, 594);
                this.Controls.Add(this.lbl_grille);
                this.Name = "Form2";
                this.Load += new System.EventHandler(this.Form2_Load);
                this.ResumeLayout(false);
     
            }
     
            private void Form2_Load(object sender, EventArgs e)
            {
                this.lbl_grille.Text = unegrille.Montab();
            }
        }
    Si quelqu'un a une idée je suis preneur.

    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 : 43
    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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.lbl_grille.Text = unegrille.Montab();
    ça n'a pas de sens de faire ça... unegrille.MonTab() est un tableau d'entier, et tu essaies de l'affecter à une propriété de type string.

    Si tu veux l'afficher dans une TextBox, il faut parcourir chaque "case" du tableau, et afficher sa valeur (2 boucles imbriquées puisqu'il y a 2 dimensions)

    Cela dit ce n'est pas forcément la meilleure solution... un contrôle de grille comme le DataGridView serait sans doute plus adapté à ton besoin

  3. #3
    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 Snowhite.

    Tu es debutant en c#....Un bon debut consiste à suivre ce que t'ont dit deja les autres membres du forum et repeter .
    La comprehension des choses viendra apres....
    Dans ton cas ,voici ce à quoi tu devrais aboutir......
    Une grille dessine dans un UserControl et c'est plus complique que ce que tu penses....(Ceci peut etre fait sur un custom Label ou un custom PictureBox)...
    Ton class Tab_grille ne sert à rien(il declare un simple tableau)......
    Tu compile et tu droppes ce usercontrol sur ton form...
    Apres dans le designer tu parametre les prop visibles du UserControl:
    - nbLignes et nbColonnes .....
    Dans le code de ton form tu remplis ton tableau score et tu l'affecte au tableau de string pour l'afficher....

    code du usercontrol:

    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
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Drawing;
    using System.Data;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
     
    namespace GrilleCSharp
    {
     
        public partial class UserControlLbl : UserControl
        {
     
     
            // carreau à dessiner
            private Rectangle[,] RC;
     
     
            public UserControlLbl()
            {
                InitializeComponent();
                this.Size = new Size(255, 332);
                this.ResizeRedraw = true;
     
     
     
                this.NbLignes = 10;
                this.NbColonnes = 5;
                this.CreeTabGrille();
     
     
     
            }
     
            private void UserControlLbl_Paint(object sender, PaintEventArgs e)
            {
     
     
     
                Graphics g = e.Graphics;
                g.Clear(Color.White);
     
                //dessin de la grille 
                Pen penRect = new Pen(this.ForeColor, 1.0f);
     
                Brush brushText = new SolidBrush(this.ForeColor);
     
                //largeur et hauteur du carreau(regle des intervalles) 
                int largRC = this.Width / (NbColonnes- 1);
                int hautRC = this.Height / (NbLignes - 1);
                Rectangle myRect;
     
                int li, col;
                int origX=0;
                int origY=0;
                for (li = 0; li < this.NbLignes-1; li++)
                {
                    origY = li * hautRC;
                    for (col = 0; col < this.NbColonnes-1; col++)
                    {
                       myRect= RC[li, col] ;
                       origX = col * largRC;
                       myRect.Location = new Point(origX, origY);
                       myRect.Size = new Size(largRC, hautRC);
                       g.DrawRectangle(penRect , myRect);
                       g.DrawString(this.strScore[li, col], this.Font, brushText, myRect.X, myRect.Y);
     
                        //utilise ce code si tu veux ecrire au centre du carreau
                        //g.DrawString(this.strScore[li, col], this.Font, brushText, (myRect.X + largRC / 2.0f), (myRect.Y + hautRC / 2.0f));
                    }
     
     
                }
     
     
            }
     
            private void CreeTabGrille()
            {
                // rappel :
                // Les tableaux sont indexés à partir de zéro .
                // un tableau avec n éléments est indexé de 0 à n-1.
     
                this.strScore = new string[this.NbLignes, this.NbColonnes];
                this.RC = new Rectangle[this.NbLignes, this.NbColonnes];
     
                int li, col; 
     
                for (li = 0; li < this.NbLignes; li++)
                {
                    for (col = 0; col < this.NbColonnes; col++)
                    {
                         RC[li, col] = new Rectangle();
                         this.strScore[li, col] = "00";
                    }
                }
            }
     
     
     
            //1 Prop lignes visible dans designer
     
            [Browsable(true)]
            [Category("Divers")]
            private int _NbLignes = 10;
            public int NbLignes
            {
                get { return _NbLignes;} 
                set
                {
                    // nbre de lignes a change 
                    // recalculer grille et redessiner
                    if (_NbLignes != value) //si nbre de lignes a change recalculer grille
                    {
                        _NbLignes = value;
                        this.CreeTabGrille();
                        this.Invalidate();
                    }
                }
            }
           //1 Prop colonnes visible dans designer 
     
            [Browsable(true)]
            private int _NbColonnes = 5;
            public int NbColonnes  
            {
                get { return _NbColonnes;} 
                set
                {
                    if (_NbColonnes != value)
                    {
                        _NbColonnes = value;
                        this.CreeTabGrille();
                        this.Invalidate();
                    }
                }
            }
     
            //1 Prop strScore 
            [Browsable(false)]
            public string[,] strScore { get; set; }
     
     
        }
    }
    code du form qui l'utilise (dropper le usercontrol sur ton form):

    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
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
     
    namespace GrilleCSharp
    {
        public partial class Form2 : Form
        {
            // rappel :
            // Les tableaux sont indexés à partir de zéro .
            // un tableau avec n éléments est indexé de 0 à n-1.
            // tableau score loto
     
            public int[,] Tabgrille ; 
            public Form2()
            {
                InitializeComponent();
                //on change un peu le nbre de lignes et colonne..... 
                this.userControlLbl1.NbLignes = 12;
                this.userControlLbl1.NbColonnes = 6;
            }
     
            private void btnBuildScore_Click(object sender, EventArgs e)
            {
                Tabgrille = new int[this.userControlLbl1.NbLignes, this.userControlLbl1.NbColonnes];
     
                int li, col;
     
                Random rnd = new Random();
                for (li = 0; li < this.userControlLbl1.NbLignes; li++)
                {
                    for (col = 0; col < this.userControlLbl1.NbColonnes; col++)
                    {
                        Tabgrille[li, col] = rnd.Next(1, 200);
                        this.userControlLbl1.strScore[li, col] = Tabgrille[li, col].ToString();
                    }
                }
     
                this.userControlLbl1.Refresh();
            }
        }
    }
    Au passage ,Benoit t'as deja suggere un moyen archi-simple c'est dessiner les carreaux avec un tableau de Label........
    bon code......

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 7
    Par défaut
    Merci beaucoup pour vos réponses, je vais essayer les deux moyens

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 15
    Dernier message: 28/05/2012, 20h11
  2. Création d'une grille
    Par Billy boy du 69 dans le forum VB.NET
    Réponses: 5
    Dernier message: 15/02/2011, 17h51
  3. Aide sur création d'une grille de menu
    Par AAWOOPY56 dans le forum AIX
    Réponses: 2
    Dernier message: 21/01/2010, 12h20
  4. créer une grille de loto
    Par guylainejm dans le forum Powerpoint
    Réponses: 1
    Dernier message: 30/01/2009, 14h03
  5. Création d'une Grille pour création d'un Schema
    Par ben_ghost dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 15/10/2007, 16h08

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