#c# #variables #types #controls
Вопрос:
Мне нужно сделать судоку и игру в сапера для школы. мой учитель любит создавать функции, которые можно использовать в различных приложениях. В обеих этих играх есть сетка, тральщик-это просто x на x, а судоку имеет сетку x на x внутри сетки x на x.
Теперь я хотел создать функцию, которая может выдавать мне эти сетки в надписях, текстовых полях, панелях и т. Д…
у меня есть следующий код:
internal class Square : Panel
{
public bool hasBomb;
}
class MineSweeper
{
static int fieldSize = 20;
static Square[,] squares;
internal static void NewGame(Panel parent)
{
squares = (Square[,])Func.MakeGrid(typeof(Square), parent, fieldSize);
}
}
class Func
{
internal static Control[,] MakeGrid(Type childType, Control parent, int size)
{
parent.Controls.Clear();
int childSize = parent.Width / size;
Control[,] output = new Control[size, size];
for (int x = 0; x < size; x )
{
for (int y = 0; y < size; y )
{
Control child = (Control)Activator.CreateInstance(childType);
child.Size = new Size(childSize, childSize);
child.Location = new Point(x * childSize, y * childSize);
output[x, y] = child;
parent.Controls.Add(child);
}
}
return output;
}
}
Это приводит к ошибке приведения в функции NewGame.
Можно ли написать функцию, которая выводит массив элементов управления, где типом элемента управления может быть любой элемент управления? Или я должен был бы прямо сказать, что MakeGrid имеет тип Square[,]?
Заранее всем спасибо! 😀