c#change button.text来自另一种方法

时间:2018-03-24 14:13:43

标签: c# function properties

我正在编写一个小数独游戏。我有一个2d阵列和许多显示数字的按钮。当我点击其中一个按钮( sudokuBoxClicked )时,我从其名称中获取按钮的x和y位置。这适用于现在。在函数结束时,将打开函数 changeNumberinSudoku 。此函数首先将数组条目更改为我想要的那个button.text上的数字,然后它将更改button.text,使其不再 null 但具有变量的changenumber

由于我的数独有81个按钮,程序不知道它应该改变什么button.text。所以它应该改变触发 sudokuBoxClicked -function的按钮的text-property。我现在的问题基本上是:

如何将对象发件人送到第二个函数,以便我可以更改其属性?

为了让您更好地了解我的需求,以下是重要的代码:

    int changeNumber = 1;
    int[,] sudokuMap = new int[9,9];

    private void sudokuBoxClicked(object sender, EventArgs e)
    {
        string nameOfClickedBox = (sender as Button).Name;
        int xPositionOfClickedButton = Convert.ToInt32(nameOfClickedBox.Substring(7, 1));
        int yPositionOfClickedButton = Convert.ToInt32(nameOfClickedBox.Substring(9, 1));
        //The array-position of the clicked box, is contained in its name. 
        changeNumberinSudoku(xPositionOfClickedButton, yPositionOfClickedButton);
    }
    private void changeNumberinSudoku(int xPos, int yPos)
    {
        sudokuMap[xPos, yPos] = changeNumber;


    }

感谢所有能帮助我的好人。

-AlexanderLe

1 个答案:

答案 0 :(得分:1)

将发件人作为参数传递给第二个函数:

changeNumberinSudoku(xPositionOfClickedButton, yPositionOfClickedButton, (sender as Button));

并更改您的功能签名:

private void changeNumberinSudoku(int xPos, int yPos, Button btn)
{
    sudokuMap[xPos, yPos] = changeNumber;

    btn.Text = ...
}