Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.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#_Windows_Forms_Function - Fatal编程技术网

C#-如何在其他函数中使用变量

C#-如何在其他函数中使用变量,c#,windows,forms,function,C#,Windows,Forms,Function,我正在尝试使用BtnRed\u Click函数中Rnd函数的变量rand。返回没有任何作用。如果我更改Rnd函数的参数,我会得到一个错误 这是我的密码 namespace ColourPick_EDP2 { public partial class Form1 : Form { int RandomNum; int counter = 60; int rand; public Form1() {

我正在尝试使用
BtnRed\u Click
函数中
Rnd
函数的变量rand。返回没有任何作用。如果我更改
Rnd
函数的参数,我会得到一个错误

这是我的密码

namespace ColourPick_EDP2
{
    public partial class Form1 : Form
    {
        int RandomNum;
        int counter = 60;
        int rand; 

        public Form1()
        {
            InitializeComponent();
        }

        private void BtnStart_Click(object sender, EventArgs e)
        {
            BtnStart.Visible = false;
            Tmr.Tick += new EventHandler(tmr_Tick);
            Tmr.Start();
            TbxDisplay.Text = counter.ToString();

           Random rnd = new Random();
           RandomNum = rnd.Next(0, 7);
           Rnd(RandomNum);   
        }

        private void tmr_Tick(object sender, EventArgs e)
        {

            counter--;
            if (counter == 0)
            {
                Tmr.Stop();
            }
            TbxDisplay.Text = counter.ToString();

        }

        private int Rnd(int rand)
        {
            int rand = rand;
            switch(rand)
            {

                case 1:
                    this.BackColor = System.Drawing.Color.Red;
                    break;
                case 2:
                    this.BackColor = System.Drawing.Color.Blue;
                    break;
                case 3:
                    this.BackColor = System.Drawing.Color.Green;
                    break;
                case 4:
                    this.BackColor = System.Drawing.Color.Yellow;
                    break;
                case 5:
                    this.BackColor = System.Drawing.Color.Purple;
                    break;
                case 6:
                    this.BackColor = System.Drawing.Color.Orange;
                    break;
            }
            return rand;
        }


        private void BtnRed_Click(object sender, EventArgs e)
        {
            if (rand == 1)
            {
                lblScore.Text += 10; 
            }
        }
    }
}

在RND方法中,您实际上没有使用rand值做任何事情,所以只需使用RandomNum。它可能应该是randomNum而不是randomNum

    private void BtnRed_Click(object sender, EventArgs e)
    {
        if (RandomNum == 1)
        {
            lblScore.Text += 10; 
        }
    }

我怀疑您真正想做的是调用函数并让它做一些事情:

  • 选择一个介于1和6之间的新随机整数值
  • 设置窗体的背景色
  • 将colorValue返回给调用函数,以便您可以使用它
  • 以下是我建议你做的:

    在类级别声明您的随机数生成器,而不是在BtnStart\u单击

    Random  randomiser = new Random()
    
    将函数调用为描述其功能的函数,例如ChooseNewColor而不是Rnd。如果愿意,您可以给它一个参数,也许可以指示它应该选择多少种颜色。以下是一份合适的声明:

    private int ChooseNewColor(int numberOfColors)
    {
        int colorValue = randomiser.Next(1, numberOfColors +1)
        switch(colorValue)
        {
            case 1:
                this.BackColor =       etc…  
    
        }
        return colorValue;
    }
    
    现在调用函数

    currentColor=选择新颜色(MaxColorValue)


    这假设MaxColorValue是一个表示最高颜色值的常数(在代码中可能为6),其输出将存储在一个名为currentColor的整数变量中,该变量已声明。

    Rnd()中删除此行。
    int rand=rand。你把那行放在那里想实现什么?“如果我更改Rnd函数的参数,我会得到一个错误。”如何更改它们?你有什么错误?如果你想得到一些帮助,请提供足够的信息让我们猜测你做了什么以及你做了什么。“返回没有任何作用”——你没有使用它返回的值,返回值正是你传入的值。你明白返回的意思吗?@CharlieWills好的,谢谢。如果这能为您解决问题,请将其标记为答案。这可能有助于您理解,当您调用函数时,参数的值会被传入,参数也会被赋予这些值。因此,在本例中,参数是MaxColorValue,其值为6。现在,在函数本身中,参数numberOfColors被赋值为6。return语句返回colorValue的值,然后在调用行上将该值分配给currentColor。