【问题标题】:C# Counter increase only if textbox not blank仅当文本框不为空时,C# 计数器才会增加
【发布时间】:2014-02-16 02:20:52
【问题描述】:

我正在做一个猜谜游戏的家庭作业。用户试图猜测一个 0-100 的数字。我对 C# 真的很陌生,这只是我的第二个 Windows 窗体。我正在尝试制作一个按钮事件来检查我的文本框是否为空白。如果它不是空白的,我需要将它添加到计数器中,一旦用户猜到正确的数字,应该会弹出一个窗口,上面写着“它花了你 这么多次 尝试!”。 “这么多”是我的计数器……我希望这是有道理的。在某些时候,我还需要确保用户只输入数字。我现在只是想弄清楚这个计数器......这是我到目前为止的代码。有一些代码被注释掉了。我完全迷路了。

public Form1()
{
    InitializeComponent();

    //Generates random number for game
    Random rnd = new Random();
    int rndNumber = rnd.Next(101);
    this.number.Text = rndNumber.ToString();
}

//Makes sure user only enters numbers 0-100
private void guess_TextChanged(object sender, EventArgs e)
{

}

//does this when evaluate button is clicked
private void evaluate_Click(object sender, EventArgs e)
{
    //counter for the number of guesses
    int guessNumber;
    guessNumber = 0;

    if (string.IsNullOrEmpty(this.guess.Text))
    {
        MessageBox.Show("Must enter a number 0-100 to play");

        // while (!string.IsNullOrEmpty(this.guess.Text))
            // {
            // guessNumber++;
            // }
    }
    else
    {
        guessNumber++;
        MessageBox.Show(guessNumber.ToString());
    }            
}

【问题讨论】:

  • 对不起,我来晚了,谢谢大家的帮助!

标签: c# windows winforms counter


【解决方案1】:

您的 evaluate_Click 方法看起来不错。如果文本框为空,请告诉他们输入一个值。在 else - 在增加计数器之前 - 检查它们是否首先输入正确的值。如果他们没有输入正确的值 - 增加计数器。

您需要将“计数器”放在类(表单)级别。如果你把它放在这样的事件中 - 它将具有局部作用域,并且每次调用事件时都会重置为 0。在类级别声明“guessNumber”变量并在事件中递增它,您应该一切就绪。

【讨论】:

    【解决方案2】:

    试试这个:

    public partial class Form1 : Form
    {
        int guessNumber;
        int rndNumber;
        int userNumber;
        public Form1()
        {
            InitializeComponent();
            //Generates random number for game
            Random rnd = new Random();
            rndNumber = rnd.Next(101);
            this.number.Text = rndNumber.ToString();
    
        }
    
    
        //does this when evaluate button is clicked        
        private void evaluate_Click(object sender, EventArgs e)
        {
            //counter for the number of guesses
    
    
    
            if (string.IsNullOrWhiteSpace(this.guess.Text))
            {
                MessageBox.Show("Must enter a number 0-100 to play");
    
                // while (!string.IsNullOrEmpty(this.guess.Text))
                // {
                // guessNumber++;
                // }
            }
            else
            {
                guessNumber++;
                userNumber = Convert.ToInt32(guess.Text);
                if (userNumber == rndNumber)
                {
                    MessageBox.Show("you took these many guesses = "+guessNumber.ToString());
                }
                else
                {
                    MessageBox.Show("Invalid Guess Try Again!!!");
                }
    
            }
        }
    
        //Makes sure user only enters numbers 0-100
        private void guess_TextChanged(object sender, EventArgs e)
        {
            var userInput=Convert.ToInt32(guess.Text);
            if (!(userInput > 0 && userInput <= 100))
            {
                MessageBox.Show("enter number between 1 and 100");
                guess.Text = userInput.ToString().Substring(0, userInput.ToString().Length - 1);
            }
        }
    }
    

    【讨论】:

      【解决方案3】:

      有一个变量,其范围在评估方法之外。也许在public Form1() 行之上。这样,它被定义在类的本地范围内,而不仅仅是方法,以便所有方法都可以访问它。

      启动评估方法后,在进行任何进一步处理之前立即增加计数器。所以你的代码看起来像:

      private void evaluate_Click(object sender, EventArgs e)
      {
          counter++;
          if (!string.isEmptyOrNull(this.guess.text))
          {
               if (rndNumber == Int32.Parse(this.guess.text))
                   //Display you are correct
               else
                   //Display guess again
          }
      }
      

      【讨论】:

        【解决方案4】:

        对于文本框中的数字,您可以在 TextBox KeyPress 事件中尝试此代码

        private void guess_KeyPress(object sender, EventArgs e)
        {
           e.Handled=!(Char.IsDigit(e.KeyChar));
           //This will only allow numeric values in TextBox
        } 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-06-29
          • 2021-02-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多