private FormTile GetNextTile(Keys key, FormTile frmTile, bool skipNotEmpty = true) { FormTile nextTile = frmTile; Control parent = frmTile.Parent; if (key == Keys.Right) { nextTile = parent.Controls.Find($"t{nextTile.Ligne}_{nextTile.Col + 1}", false).FirstOrDefault() as FormTile; } else if (key == Keys.Left) { nextTile = parent.Controls.Find($"t{nextTile.Ligne}_{nextTile.Col - 1}", false).FirstOrDefault() as FormTile; } else if (key == Keys.Up) { nextTile = parent.Controls.Find($"t{nextTile.Ligne - 1}_{nextTile.Col}", false).FirstOrDefault() as FormTile; } else if (key == Keys.Down) { nextTile = parent.Controls.Find($"t{nextTile.Ligne + 1}_{nextTile.Col}", false).FirstOrDefault() as FormTile; } if (skipNotEmpty) { while (nextTile != null && !nextTile.IsEmpty && nextTile.Col < (Game.BoardSize - 1) && nextTile.Ligne < (Game.BoardSize - 1)) { nextTile = GetNextTile(key, nextTile); } } if (nextTile != null) { nextTile.Focus(); } return(nextTile); }
private void RefreshGridTiles(bool initBoard = true) { if (initBoard) { Game.InitBoard(); } //CustomGroupBox.SuspendDrawing(gbBoard.Parent); bool hasHeaderTile = gbBoard.Controls.Count > 0; FormTile frmTile = null; for (int i = 0; i < Game.BoardSize; i++) { if (hasHeaderTile) { frmTile = gbBoard.Controls.Find($"header_col{i}", false).First() as FormTile; } if (frmTile == null) { gbBoard.Controls.Add(new FormTile(this, Game, new Tile(Game, 0, i), $"header_col{i}", HeaderTilesBackColor) { Text = $"{i + 1}" }); } else { frmTile = new FormTile(this, Game, new Tile(Game, 0, i), $"header_col{i}", HeaderTilesBackColor) { Text = $"{i + 1}" } }; if (hasHeaderTile) { frmTile = gbBoard.Controls.Find($"header_ligne{i}", false).First() as FormTile; } if (frmTile == null) { gbBoard.Controls.Add(new FormTile(this, Game, new Tile(Game, i, 0), $"header_ligne{i}", HeaderTilesBackColor) { Text = $"{Game.Alphabet[i].Char}" }); } else { frmTile = new FormTile(this, Game, new Tile(Game, i, 0), $"header_ligne{i}", HeaderTilesBackColor) { Text = $"{Game.Alphabet[i].Char}" } }; } foreach (var tile in Game.Grid) { frmTile = new FormTile(this, Game, tile); frmTile.Text = tile.Letter?.Char.ToString(); var existingTile = hasHeaderTile ? FindTile(tile) : null; if (existingTile == null) { gbBoard.Controls.Add(frmTile); } else { gbBoard.Controls.RemoveByKey(frmTile.Name); gbBoard.Controls.Add(frmTile); } } //CustomGroupBox.ResumeDrawing(gbBoard.Parent); }