Как создать магический квадрат с помощью Windows Forms?

Я должен создать магический квадрат в 2D, используя приложение Windows Forms. Он должен выглядеть так:

Изображение 3x3 магического квадрата с указанием чисел и сетки.

Однако пользователь должен иметь возможность определять размер квадрата (3×3, 5×5, 7×7 и т. Д.). Я уже написал код в Консольном приложении, но я не знаю, как добавить 2D-графику.

Кто-то уже задал этот вопрос ( как мне поместить свой результат в графический интерфейс? ), И один из ответов заключался в использовании DataGridView , но я не уверен, что это то, что я ищу, поскольку я не могу это сделать выглядите как картинка.

Любые идеи или советы?

Вы можете использовать TableLayoutPanel и добавлять кнопки на панель динамически.

Если вам не нужно взаимодействовать с кнопками, вместо этого вы можете добавить Label .

Создайте квадрат динамически:

 public void CreateSquare(int size) { //Remove previously created controls and free resources foreach (Control item in this.Controls) { this.Controls.Remove(item); item.Dispose(); } //Create TableLayoutPanel var panel = new TableLayoutPanel(); panel.RowCount = size; panel.ColumnCount = size; panel.BackColor = Color.Black; //Set the equal size for columns and rows for (int i = 0; i < size; i++) { var percent = 100f / (float)size; panel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, percent)); panel.RowStyles.Add(new RowStyle(SizeType.Percent, percent)); } //Add buttons, if you have your desired output in an array //you can set the text of buttons from your array for (var i = 0; i < size; i++) { for (var j = 0; j < size; j++) { var button = new Button(); button.BackColor = Color.Lime; button.Font = new Font(button.Font.FontFamily, 20, FontStyle.Bold); button.FlatStyle = FlatStyle.Flat; //you can set the text of buttons from your array //For example button.Text = array[i,j].ToString(); button.Text = string.Format("{0}", (i) * size + j + 1); button.Name = string.Format("Button{0}", button.Text); button.Dock = DockStyle.Fill; //If you need interaction with buttons button.Click += b_Click; panel.Controls.Add(button, j, i); } } panel.Dock = DockStyle.Fill; this.Controls.Add(panel); } 

Если вам нужно взаимодействие с кнопками

 void button_Click(object sender, EventArgs e) { var button = (Button)sender; //Instead put your logic here MessageBox.Show(string.Format("You clicked {0}", button.Text)); } 

Например, вы можете позвонить

 CreateSquare(3); 

Скриншот:

введите описание изображения здесь

Вы можете создать форму и добавить TableLayoutPanel с этим свойством

 tableLayoutPanel1.Dock = DockStyle.Fill; tableLayoutPanel1.BackColor = Color.Gold; 

и это результат

введите описание изображения здесь

Когда вы создаете строки и столбцы, чтобы правильно установить процент таким образом:

введите описание изображения здесь

После этого вы можете добавить кнопку или ярлык на каждом квадрате.

введите описание изображения здесь

  • Откройте URL-адрес из Windows Forms
  • Получение первого и последнего дня месяца с использованием заданного объекта DateTime
  • Какая радио кнопка в группе проверена?
  • Как сохранить Список в Settings.Default?
  • выставлять и увеличивать событие дочернего элемента управления в usercontrol в c #
  • Доступ к элементам управления пользовательским интерфейсом в Task.Run с помощью async / wait на WinForms
  • Cursor.Current против this.Cursor
  • Программно добавить новый столбец в DataGridView
  • как я могу показать сумму в столбце datagridview?
  • Как установить Z-порядок управления с помощью WinForms
  • Как я могу перебирать все флажки в форме?
  • Давайте будем гением компьютера.