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

时间:2017-02-14 20:53:26

标签: c# windows forms function

我正在尝试使用Rnd函数中BtnRed_Click函数的变量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; 
            }
        }
    }
}

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

  1. 选择1到6之间的新随机整数colourValue
  2. 设置表单的背景颜色
  3. 将colorValue返回给调用函数,以便您可以使用它。
  4. 我建议你这样做:

    在类级别而不是在BtnStart_Click

    中声明您的随机数生成器
    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 = ChooseNewColor(MaxColorValue);

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