C# 标签不显示随机模拟的输出

C# 标签不显示随机模拟的输出,c#,multidimensional-array,label,C#,Multidimensional Array,Label,我有一个类项目来创建一个tic-tac-toe模拟(游戏不是由人玩的),当点击新游戏按钮时,O和X会自动生成。我在获取标签以显示输出时遇到了代码问题 使用2D数组类型INT来模拟游戏板,它应该在9个元素中的每个元素中存储0或1,并生成一个O或X。如果X或O获胜,还需要有一个标签来显示 这是我到目前为止的代码(我知道没有多少,我完全迷路了): 公共部分类表单1:表单 { 公共表格1() { 初始化组件(); } 私有无效开始按钮单击(对象发送者,事件参数e) { Random rand=新的Ran

我有一个类项目来创建一个tic-tac-toe模拟(游戏不是由人玩的),当点击新游戏按钮时,O和X会自动生成。我在获取标签以显示输出时遇到了代码问题

使用2D数组类型INT来模拟游戏板,它应该在9个元素中的每个元素中存储0或1,并生成一个O或X。如果X或O获胜,还需要有一个标签来显示

这是我到目前为止的代码(我知道没有多少,我完全迷路了):

公共部分类表单1:表单
{
公共表格1()
{
初始化组件();
}
私有无效开始按钮单击(对象发送者,事件参数e)
{
Random rand=新的Random();
const int ROWS=3;
常数int COLS=3;
int[,]游戏板=新int[行,列];
对于(int row=0;row

除非当前事件进程完全完成,否则将填充Win表单标签。如果要在使用控件属性InvokeRequired(布尔值)的同时,在将值赋给label后,使用X和O更新标签,请调用label.Refresh()函数。我建议在点击开始按钮时分叉一个线程,并在线程内执行for循环->random.next()。尝试这些更改。祝你一切顺利

尝试以下操作:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication4
{
    public partial class Form1 : Form
    {
        const int ROWS = 3;
        const int COLS = 3;

        const int WIDTH = 100;
        const int HEIGHT = 100;
        const int SPACE = 20;
        static TextBox[,] gameBoard;

        public Form1()
        {
            InitializeComponent();
            gameBoard = new TextBox[ROWS, COLS];

            for (int row = 0; row < ROWS; row++)
            {
                for (int col = 0; col < COLS; col++)
                {
                    TextBox newTextBox = new TextBox();
                    newTextBox.Multiline = true;
                    this.Controls.Add(newTextBox);
                    newTextBox.Height = HEIGHT;
                    newTextBox.Width = WIDTH;
                    newTextBox.Top = SPACE + (row * (HEIGHT + SPACE));
                    newTextBox.Left = SPACE + (col * (WIDTH + SPACE));
                    gameBoard[row, col] = newTextBox;
                }
            }

        }


    }
}
使用系统;
使用System.Collections.Generic;
使用系统组件模型;
使用系统数据;
使用系统图;
使用System.Linq;
使用系统文本;
使用System.Windows.Forms;
命名空间Windows窗体应用程序4
{
公共部分类Form1:Form
{
const int ROWS=3;
常数int COLS=3;
常数int宽度=100;
const int HEIGHT=100;
const int SPACE=20;
静态文本框[,]游戏板;
公共表格1()
{
初始化组件();
gameBoard=新文本框[行,列];
对于(int row=0;row
很抱歉,我是编程新手,您能举例说明吗?我们还没有讨论你在课堂上提到的内容。我们在你的代码中没有看到任何标签的引用。我知道,这就是我试图解决的问题。labels1-9是名称,我不知道如何获取随机生成的结果,并根据生成的内容让标签显示X或O。这不符合项目标准,我们需要在windows窗体中使用标签控件。然后简单地将控件类型从文本框更改为标签。除了标签没有多行之外,所有内容都是一样的(所以请删除这一行)。我已经创建了表单,我需要它随机生成0或1,并为每个标签分配一个O或X。然后您必须按行和列为每个标签编制索引。我将9个标签添加到gameBoard阵列中。所以你也需要这样做。动态创建标签使更改更加容易。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication4
{
    public partial class Form1 : Form
    {
        const int ROWS = 3;
        const int COLS = 3;

        const int WIDTH = 100;
        const int HEIGHT = 100;
        const int SPACE = 20;
        static TextBox[,] gameBoard;

        public Form1()
        {
            InitializeComponent();
            gameBoard = new TextBox[ROWS, COLS];

            for (int row = 0; row < ROWS; row++)
            {
                for (int col = 0; col < COLS; col++)
                {
                    TextBox newTextBox = new TextBox();
                    newTextBox.Multiline = true;
                    this.Controls.Add(newTextBox);
                    newTextBox.Height = HEIGHT;
                    newTextBox.Width = WIDTH;
                    newTextBox.Top = SPACE + (row * (HEIGHT + SPACE));
                    newTextBox.Left = SPACE + (col * (WIDTH + SPACE));
                    gameBoard[row, col] = newTextBox;
                }
            }

        }


    }
}