如何使用Windows窗体创build一个幻方块?

我应该使用Windows窗体应用程序在2D中创build一个幻方。 它应该是这样的:

3x3魔术广场的图像显示数字和网格。

但是,用户应该能够决定正方形的大小(3×3,5×5,7×7等)。 我已经写了一个控制台应用程序的代码,但我不知道如何添加2Dgraphics。

有人已经问过这个问题( 我如何把我的结果放入一个GUI? ),其中一个答案是使用DataGridView ,但我不知道这是我在找什么,因为我不能做到这一点看起来像图片。

任何想法或build议?

您可以使用TableLayoutPanel并dynamic添加button到面板。

如果您不需要与button交互,则可以添加Label

dynamic创build广场:

 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); } 

如果你需要与button交互

 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); 

截图:

在这里输入图像描述

您可以创build一个窗体并添加一个TableLayoutPanel与此属性

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

这是结果

在这里输入图像描述

在创build“行”和“列”时,要按照以下方式正确设置百分比:

在这里输入图像描述

在此之后,您可以在每个方块中添加一个button或标签。

在这里输入图像描述