Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
函数未更新按钮。文本c#_C# - Fatal编程技术网

函数未更新按钮。文本c#

函数未更新按钮。文本c#,c#,C#,我有一个网格的按钮,当他们被点击(在按钮本身内)时,应该会显示一些信息,我正试图为扫雷者编程 网格方法: public void createGrid() { for (int i = 0; i < 8; i++) { grid[i] = new Cell[8]; for (int j = 0; j < 8; j++) { chance =

我有一个网格的按钮,当他们被点击(在按钮本身内)时,应该会显示一些信息,我正试图为扫雷者编程

网格方法:

public void createGrid()
    {
        for (int i = 0; i < 8; i++)
        {
            grid[i] = new Cell[8];
            for (int j = 0; j < 8; j++)
            {
                chance = rand1.Next(0, 6);
                if (chance == 0 && bombAmount < 10)
                {
                    grid[i][j] = new Cell(true);
                    bombAmount++;
                }
                else
                {
                    grid[i][j] = new Cell();
                }

                grid[i][j].Name = "grid" + i.ToString() + j.ToString();
                grid[i][j].Location = new System.Drawing.Point(i * 49, j * 49);
                grid[i][j].Size = new System.Drawing.Size(50, 50);
                grid[i][j].TabIndex = 0;
                grid[i][j].Font = new System.Drawing.Font("Microsoft Sans Serif", 26.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));

            }
        }

        for (int i = 0; i < 8; i++)
        {
            for (int j = 0; j <8; j++)
            {
                this.Controls.Add(grid[i][j]);
            }
        }
    }
然后是检查邻居是否有炸弹的方法:

public void CheckNeighbours(int cswitch)
    {
        switch (cswitch)
        {
            // Left upper corner (i = 0, j = 0)
            case 1:
                for (int i = 0; i <= 1; i++)
                {
                    for (int j = 0; j < 1; j++)
                    {
                        if (i == 0 && j == 0) { }
                        else
                        {
                            if (grid[i][j].HasBomb == true)
                            {
                                grid[0][0].NeighbourBombCount++;
                            }
                        }
                    }
                }
                break;

            // Upper edge (i = 0, 0 < j < 7)
            case 2:
                for (int i = 0; i <= 1; i++)
                {
                    for (int j = -1; j <= 1; j++)
                    {
                        if (i == 0 && j == 0) { }
                        else
                        {
                            if (grid[i][j].HasBomb == true)
                            {
                                grid[0][0].NeighbourBombCount++;
                            }
                        }
                    }
                }
                break;

            // Right upper corner (i = 0, j = 7)
            case 3:
                for (int i = 0; i <= 1; i++)
                {
                    for (int j = -1; j <= 0; j++)
                    {
                        if (i == 0 && j == 0) { }
                        else
                        {
                            if (grid[i][j].HasBomb == true)
                            {
                                grid[0][0].NeighbourBombCount++;
                            }
                        }
                    }
                }
                break;

            // Right edge (0 < i < 7, j = 7)
            case 4:
                for (int i = -1; i <= 1; i++)
                {
                    for (int j = -1; j <= 0; j++)
                    {
                        if (i == 0 && j == 0) { }
                        else
                        {
                            if (grid[i][j].HasBomb == true)
                            {
                                grid[0][0].NeighbourBombCount++;
                            }
                        }
                    }
                }
                break;

            // Right down corner (i = 7, j = 7)
            case 5:
                for (int i = -1; i <= 0; i++)
                {
                    for (int j = -1; j <= 0; j++)
                    {
                        if (i == 0 && j == 0) { }
                        else
                        {
                            if (grid[i][j].HasBomb == true)
                            {
                                grid[0][0].NeighbourBombCount++;
                            }
                        }
                    }
                }
                break;

            // Bottom edge (i = 7, 0 < j < 7)
            case 6:
                for (int i = -1; i <= 0; i++)
                {
                    for (int j = -1; j <= 1; j++)
                    {
                        if (i == 0 && j == 0) { }
                        else
                        {
                            if (grid[i][j].HasBomb == true)
                            {
                                grid[0][0].NeighbourBombCount++;
                            }
                        }
                    }
                }
                break;

            // Left down corner (i = 7, j = 0)
            case 7:
                for (int i = -1; i <= 0; i++)
                {
                    for (int j = -1; j <= 1; j++)
                    {
                        if (i == 0 && j == 0) { }
                        else
                        {
                            if (grid[i][j].HasBomb == true)
                            {
                                grid[0][0].NeighbourBombCount++;
                            }
                        }
                    }
                }
                break;

            // Left edge (i = 0, 0 < j < 7)
            case 8:
                for (int i = 0; i <= 1; i++)
                {
                    for (int j = -1; j <= 1; j++)
                    {
                        if (i == 0 && j == 0) { }
                        else
                        {
                            if (grid[i][j].HasBomb == true)
                            {
                                grid[0][0].NeighbourBombCount++;
                            }
                        }
                    }
                }
                break;

            default:
                for (int i = -1; i <= 1; i++)
                {
                    for (int j = -1; j <= 1; j++)
                    {
                        if (i == 0 && j == 0) { }
                        else
                        {
                            if (grid[i][j].HasBomb == true)
                            {
                                grid[0][0].NeighbourBombCount++;
                            }
                        }
                    }
                }
                break;

        }
    }
现在我只需要知道如何从发送方对象获取I和j索引,我就是golden

你需要

cell[i][j].Click += new System.EventHandler(this.CellClick);

并创建一个单CellClick事件处理程序方法

调用过
Cell1\u Click
etc吗?如果在调试模式下设置断点?我看不到任何地方您正在将事件连接到事件处理程序。我太傻了。。。。我从不将单击事件指定给自定义函数。我想,您的评论让我走上了正确的轨道,现在要想弄清楚如何将
网格[I][j]
分配给
Cellx\u单击
您可能只需要一个事件处理程序和一个包含坐标的自定义事件参数。这样,您就可以在初始化时分配它。从那里,您应该能够计算要传递给CheckNeights和RevealCell的值。(后者是不言而喻的)我不知道你能做到,你能进一步解释一下吗?这将立即解决我现在得到的超长代码文件!感觉我们要看你用一系列的问题来写你的扫雷游戏。可悲的是,我们永远不会看到它完成(当它工作时,你不会问任何问题)。您只需要向单元格中添加一个onclick处理程序,EventArgt中的单元格对象将无法工作。它必须是lambda才能使用i,j。所以
cell[i][j]。单击+=(发送方,事件参数)=>{CellClick(i,j);}或类似的东西。这看起来很有希望,每当我找到它pm100时,我都会给你发一个到github的链接,指向完成的应用程序。@DaxFohl Nope brain=fried。。。我不知道如何使用1访问I和j部件eventhandler@pm100如前所述,“已完成”应用程序的github链接。但是,由于应用程序中仍存在一些bug,因此有一个待办事项列表:
1。对相邻单元格的检查未优化,将对最顶层的行抛出一个错误。相邻的单元没有正确地显示相邻的炸弹,至少在屏幕中央没有显示,不知何故,只有边缘的箱子在正常工作
        private void Cell_click(object sender, EventArgs e)
    {

        e.
        if(i == 0 && j == 0)
        {
            CheckNeighbours(1);
        }

        if (i == 0 && j > 0 && j < 7)
        {
            CheckNeighbours(2);
        }

        if (i == 0 && j == 7)
        {
            CheckNeighbours(3);
        }

        if (i > 0 && i < 7 && j == 7)
        {
            CheckNeighbours(4);
        }

        if (i == 7 && j == 7)
        {
            CheckNeighbours(5);
        }

        if (i == 7 && j > 0 && j < 7)
        {
            CheckNeighbours(6);
        }

        if (i == 7 && j == 0)
        {
            CheckNeighbours(7);
        }

        if(i > 0 && i < 7 && j == 0)
        {
            CheckNeighbours(8);
        }

        RevealCell(i, j);

    }
cell[i][j].Click += new System.EventHandler(this.CellClick);