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

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

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

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

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

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

2 Solutions collect form web for “Как создать магический квадрат с помощью Windows Forms?”

Вы можете использовать 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; 

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

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

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

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

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

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

  • Каков правильный способ свести к минимуму использование приложения C # WinForms?
  • Как вы показываете анимированные GIF-файлы в форме Windows (c #)
  • Как рисовать округленный прямоугольник с помощью WinForms (.NET)?
  • Как скрыть вкладку TabControl
  • Самая верхняя форма, нажатие «через» возможно?
  • Воспроизведение двух звуков одновременно
  • Могу ли я разместить Windows Form внутри элемента управления
  • Можно скопировать все свойства определенного элемента управления? (Формы windows C #)
  • Преодоление ограничений на доступ к ОС в Windows Минимальный размер
  • Безопасно ли просто устанавливать CheckForIllegalCrossThreadCalls на false, чтобы избежать ошибок сквозной streamовой передачи во время отладки?
  • как изменить цвет заголовка Winform DataGridview?
  • Давайте будем гением компьютера.