从同一文本框中获取第二个输入

Posted

技术标签:

【中文标题】从同一文本框中获取第二个输入【英文标题】:Getting a second input from same text box 【发布时间】:2015-10-07 17:27:33 【问题描述】:

我在 C# 课上,我们的任务是创建一个随机数生成器并让用户猜数字。一旦用户做出猜测,程序就会告诉用户它是太高还是太低,然后允许他们修改他们的猜测。它还跟踪用户完成的猜测次数。

我的问题是,在第一次运行后,它不允许用户输入新的猜测。它要么保留第一个条目,要么如果我清除条目说它是无效输入。任何和所有的帮助表示赞赏。因为这是一项家庭作业,我需要使用某些元素,例如 try catch,以及重复循环,例如 for 循环或 do while 循环。感谢您的帮助。

private void Guess_btn_Click(object sender, EventArgs e)

    try
    
        Random random = new Random();
        int Answer = random.Next(0, 99);
        int User_Guess = 0;
        int Guess_num = 0;

        do
        
            User_Guess = int.Parse(Guess_txtbx.Text);
            Guess_num++;
            if (User_Guess < Answer)
            
                MessageBox.Show("Your answer is too low, try again.");
                Guess_txtbx.Clear();
                Guess_txtbx.Focus();
                User_Guess = int.Parse(Guess_txtbx.Text);
            
            else if (User_Guess > Answer)
            
                MessageBox.Show("Your answer is too high, try again.");
                Guess_txtbx.Clear();
                Guess_txtbx.Focus();
                User_Guess = int.Parse(Guess_txtbx.Text);
            
            else
            
                MessageBox.Show("Your answer is correct! It took you " + Guess_num + "number of guesses.");
            
         while (User_Guess != Answer);
    
    catch (Exception ex)
    
        //Display error message
        MessageBox.Show(ex.Message);
    

【问题讨论】:

您清除 Guess_txtbx 字段,然后解析空值。这可能会引发异常。由于该值已被解析(循环中的第一条语句),因此条件块中的以下解析是多余的。 我不确定循环是否有意义。他们给出一个答案,当他们点击 Guess 时会触发 click 事件,你会判断是高还是低,然后显示消息并等待他们的下一个答案和按钮点击。这意味着答案应该在点击事件之外确定。 【参考方案1】:

您在 click 事件处理程序中使用“do-while”循环,这会导致 UI 线程阻塞并挂起整个应用程序。

你可以使用这样的东西

public partial class Form1 : Form

    public Form1()
    
        InitializeComponent();
        Answer = random.Next(0, 99);
        User_Guess = 0;
        Guess_num = 0;
    

    Random random = new Random();
    int Answer;
    int User_Guess;
    int Guess_num;

    private void Guess_btn_Click(object sender, EventArgs e)
    
        try
        
            User_Guess = int.Parse(Guess_txtbx.Text);
            Guess_num++;

            if (User_Guess == Answer)
            
                MessageBox.Show("Your answer is correct! It took you " + Guess_num + "number of guesses.");
                Guess_num = 0;
                return;
            

            MessageBox.Show(String.Format("Your answer is too 0, try again.", User_Guess > Answer ? "High" : "Low"));
            Guess_txtbx.Clear();
            Guess_txtbx.Focus();
         

        catch (Exception ex)
         
            MessageBox.Show(ex.Message);
         
    

我检查了我的代码。它始终运行和执行。您的代码中还有一个错误:您在单击事件处理程序中编写了随机数随着用户单击按钮而生成,然后您总是有不同的数字并且用户根本无法猜出正确的数字。

【讨论】:

Fabjan:通过一些研究,我发现您绝对正确我的 GUI 已锁定,并且不允许在按钮单击中输入新条目。我想我不知道把它放在哪里,当我插入你的代码时,它不允许我读取任何输入。

以上是关于从同一文本框中获取第二个输入的主要内容,如果未能解决你的问题,请参考以下文章

用户输入值时如何从文本框中填充消息框?

无法使用 Selenium WebDriver 在文本框中输入值

如何从 Selenium 的文本框中获取输入的文本

MFC如何从文本框中获取数字

Android WebView 文本框确认密码第二个获取焦点后设置不能自动放大

正则表达式,电子邮件验证从文本框中获取用户输入