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 :

Petit souci de tableau


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    auto-didacte
    Inscrit en
    Août 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : auto-didacte

    Informations forums :
    Inscription : Août 2015
    Messages : 10
    Par défaut Petit souci de tableau
    Bonjour à tous,

    Je vous contacte car je cherche à faire une grille sur une picturebox pour un projet personnel, mais ça fait plusieurs jours que je bug sur un souci bien particulier.
    En effet, ma fonction ne termine pas la grille comme je voudrais, elle s'arrête à une valeur près et si je tente de mettre celle valeur à la main, ça me met "index hors du tableau".

    Je suis sûr que c'est un souci vraiment bête mais je n'arrive pas à le voir ><
    Je viens alors vous voir pour vous demander conseil, si jamais vous savez comment m'aider ça serait vraiment au top, pas forcement du "tout cuit" mais à minima des pistes car je sèche là.

    Je vous transmet donc le screen du souci, le problème est la cellule 478 en bas à droite qui est inexistante et pourtant l'algorithme prend en compte la largeur et la hauteur, devrait la créer.
    Je vous met aussi le code.

    En vous remerciant par avance.


    Nom : Sans titre.png
Affichages : 103
Taille : 32,6 Ko


    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
     public void GenerateGrid()
            {
     
               for (int n = 0; n <= SizeTable.Height; ++n)
                {
                    for(int i = 0; i <= SizeTable.Width +1; ++i)
                    {
                        int E_H = n * SizeCell;
                        int E_W = i * SizeCell * 2;
                        Point A = new Point(SizeCell + E_W, E_H);
                        Point B = new Point(SizeCell * 2 + E_W, SizeCell / 2 + E_H);
                        Point C = new Point(SizeCell + E_W, SizeCell + E_H);
                        Point D = new Point(E_W, SizeCell / 2 + E_H);
     
                        int ID = i + (n * SizeTable.Width * 2) - n;
     
                       if(ID <= MyMap.Cells.Length-1)
                          {
                            if (MyMap.Cells[ID] == null)
                            {
                                CellsData NewCell = new CellsData();
                                NewCell.New(this);
                                NewCell.ID = ID;
                                NewCell.Location = new Point[] { A, B, C, D };
                                MyMap.Cells[NewCell.ID] = NewCell;
     
                            }
                            else
                            {
                                MyMap.Cells[ID].JoinMap(this);
                                MyMap.Cells[ID].Location = new Point[] { A, B, C, D };
                            }
                        }
     
     
     
                    }
                }
     
               for(int u = 0; u <= SizeTable.Height -2; u++ )
                {
                    for(int o = 0; o<= SizeTable.Width -2; o++)
                    {
                        int E_H = (u * SizeCell) + (SizeCell / 2);
                        int E_W = (o * SizeCell * 2) + SizeCell;
                        Point A = new Point(SizeCell + E_W, E_H);
                        Point B = new Point(SizeCell * 2 + E_W, SizeCell / 2 + E_H);
                        Point C = new Point(SizeCell * 2 + E_W, SizeCell + E_H);
                        Point D = new Point(E_W, SizeCell / 2 + E_H);
     
                        int ID = o + (u * (SizeTable.Width * 2) + SizeTable.Width) - u;
     
     
                        if(ID <= MyMap.Cells.Length -1)
                         {
                             if(MyMap.Cells[ID] == null)
                             {
                                 CellsData CD = new CellsData();
                                 CD.New(this);
                                 CD.ID = ID;
                                 CD.Location = new Point[] { A, B, C, D };
     
                                 MyMap.Cells[CD.ID] = CD;
                             }
                            else
                             {
                                 MyMap.Cells[ID].JoinMap(this);
                                 MyMap.Cells[ID].Location = new Point[] { A, B, C, D };
                             }
                         }
     
                    }
                }
                CellsData W = MyMap.Cells.Last();
                MessageBox.Show($"{W.ID} / {MyMap.Cells.Length}");
     
            }

  2. #2
    Membre éprouvé
    Homme Profil pro
    Passioné ...
    Inscrit en
    Juillet 2020
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Passioné ...
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2020
    Messages : 145
    Par défaut
    Bonjour,
    as-tu essayé : for(int i = 0; i < SizeTable.Width ; i++) ?
    Amitiés Denis

  3. #3
    Membre averti
    Homme Profil pro
    auto-didacte
    Inscrit en
    Août 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : auto-didacte

    Informations forums :
    Inscription : Août 2015
    Messages : 10
    Par défaut
    Salut,

    Cela ne change rien au problème, ça ne change rien à rien en faite.

  4. #4
    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
    l'artillerie "russe" de campagne peut venir à bout de tous les problème, et il ne sert à rien de s'acharner sur le dernier & retors "square" :
    1/ ta grille comporte un nombre de cellules impair par ligne( d'après la capture).
    2/ les regles de dessin suivantes sont auto-suffisantes
    -si ligne impaire et colonne impaire on dessine un "square" ou un bouton (dans l'exemple qui suit)
    -si ligne paire et colonne Impaire on dessine un "square" ou un bouton (dans l'exemple qui suit)

    il suffit donc de mettre en oeuvre cet algo en c# comme dans l'exemple qui suit:
    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
     
    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 WinTableauGrille
    {
        public partial class Form1 : Form
        {
            List<Button> listSquares = null;
            private int nbCell=11; // nbre de cellules est impair
            private int sizeCell=50; // taille de cellule carrée ou ce que tu veux
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
                // prepare pictubox
                pictureBox1.Size = new Size(nbCell * sizeCell, nbCell * sizeCell);
                FillCell();
            }
            private void FillCell()
            {
                Button square = null;
                listSquares = new List<Button>();
                int x,y;
                y=0;
                for (int row = 1; row < nbCell+1; row++)
                {
                    x = 0;
                    for (int col = 1; col < nbCell+1; col++)
                    {
     
                        if (row % 2 != 0 && col % 2 != 0) //impair
                        {
                            Point loc = new Point(x, y);
                            square = new Button();
                            square.Location = loc;
                            square.Size = new Size(sizeCell, sizeCell);
                            square.BackColor = Color.Red;
                            square.Text = (row + row * col).ToString();
                        }
                        else if (row % 2 == 0 && col % 2 == 0) //pair
                        {
                            Point loc = new Point(x, y);
                            square = new Button();
                            square.Location = loc;
                            square.Size = new Size(sizeCell, sizeCell); 
                            square.BackColor = Color.Violet;
                            square.Text = (row + row * col).ToString();
     
                        }
     
     
                        x+=sizeCell ;
                        listSquares.Add(square);
                    }
                    y+= sizeCell;
                }
                pictureBox1.Controls.AddRange(listSquares.ToArray());
     
            }
     
     
        }
    }
    A toi de l'adapter à ton code de Map.
    bon code...

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

Discussions similaires

  1. (bash) petit souci avec un tableau
    Par lrgtk dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 25/08/2010, 05h41
  2. [Oracle] petit soucis de tableau
    Par AlternantOracle dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/03/2010, 11h24
  3. petit soucis de position de tableau
    Par Holic dans le forum Mise en page CSS
    Réponses: 10
    Dernier message: 29/10/2009, 23h31
  4. petit soucis de taille de tableau
    Par ortholle dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 16/10/2009, 17h08
  5. Réponses: 10
    Dernier message: 26/10/2006, 12h25

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