Come Creare Dinamicamente una Griglia in C# Applicazione Windows Form

Ho un progetto che ha bisogno di avere una griglia creata dinamicamente in un’Applicazione Windows Form che ha un click ascoltatore su ogni cella.

La Griglia deve essere di 12 X 12

Ho studiato e ricercato questo e cant trovare un modo per aggiungere una griglia per una Applicazione Windows Form. Ho visto soluzioni per WPF, ma non per windows Forms.

Se è Possibile mi punto nella giusta direzione, avrebbe apprezzare qualsiasi aiuto

La rete dovrà essere utilizzato con un Gioco Battleship

OriginaleL’autore Big Al Ruby Newbie | 2015-11-11

2 Replies
  1. 5

    Provare questo codice in un modulo in cui si desidera che la griglia:

    EDIT: ho aggiunto un modo per mettere le 12 righe di 12 colonne della griglia tramite il nuovo BattleShipRow classe. È possibile aggiungere dati a una griglia in vari modi, ma questo si lega un elenco di tutti gli oggetti alla griglia.

    È probabile che sia necessario modificare le dimensioni per rendere il display nel modo che si desidera.

    Infine, ho fatto il battleShipGrid elenco definito in LoadGridData un membro pubblico. È possibile modificare i dati in questo elenco di BattleShipRow oggetti necessari per il gioco, come fa clic verificarsi.

        private System.Windows.Forms.DataGridView myNewGrid;  //Declare a grid for this form
        private List<BattleShipRow> battleShipGrid; //Declare this here so that you can use it later to manipulate the cell contents
    
        private void Form1_Load(object sender, EventArgs e)
        {
            myNewGrid = new System.Windows.Forms.DataGridView();
            ((System.ComponentModel.ISupportInitialize)(myNewGrid)).BeginInit();
            this.SuspendLayout();
            myNewGrid.Parent = this;  //You have to set the parent manually so that the grid is displayed on the form
            myNewGrid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
            myNewGrid.Location = new System.Drawing.Point(10, 10);  //You will need to calculate this postion based on your other controls.  
            myNewGrid.Name = "myNewGrid";
            myNewGrid.Size = new System.Drawing.Size(400, 400);  //You said you need the grid to be 12x12.  You can change the size here.
            myNewGrid.TabIndex = 0;
            myNewGrid.ColumnHeadersVisible = false; //You could turn this back on if you wanted, but this hides the headers that would say, "Cell1, Cell2...."
            myNewGrid.RowHeadersVisible = false;
            myNewGrid.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
            myNewGrid.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells;
            myNewGrid.CellClick += MyNewGrid_CellClick;  //Set up an event handler for CellClick.  You handle this in the MyNewGrid_CellClick method, below
            ((System.ComponentModel.ISupportInitialize)(myNewGrid)).EndInit();
            this.ResumeLayout(false);
            myNewGrid.Visible = true;
            LoadGridData();
        }
    
        public class BattleShipRow
        {
            public string Cell1 { get; set; }
            public string Cell2 { get; set; }
            public string Cell3 { get; set; }
            public string Cell4 { get; set; }
            public string Cell5 { get; set; }
            public string Cell6 { get; set; }
            public string Cell7 { get; set; }
            public string Cell8 { get; set; }
            public string Cell9 { get; set; }
            public string Cell10 { get; set; }
            public string Cell11 { get; set; }
            public string Cell12 { get; set; }
        }
    
        private void LoadGridData()
        {
            battleShipGrid = new List<BattleShipRow>();
            for (var i = 0; i < 12; i++)
            {
                battleShipGrid.Add(new BattleShipRow());
            }
            myNewGrid.DataSource = battleShipGrid;
        }
    
        private void MyNewGrid_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            throw new NotImplementedException();
        }
    con quel codice mi compare un riquadro grigio a metà del mio stato di forma. Un po ‘ di informazioni su questa Griglia. è necessario essere in grado di fare un gioco battleship con esso
    Fatto questo risponde alla tua domanda, o ci sono altri problemi?

    OriginaleL’autore Keith Holloway

Lascia un commento