【问题标题】:C# How to re-run code in form loadC#如何在表单加载中重新运行代码
【发布时间】:2014-07-19 22:48:57
【问题描述】:

对于我正在编写的程序,我想询问一个名称,以及输入是否有数字或其他不需要的输入,以便循环返回并再次执行。

这是我当前的代码

private void gameForm_Load(object sender, EventArgs e)
{
    string value = "Type here";
    if (globalVariables.InputBox("Name", "Please enter name", ref value) == DialogResult.OK)
    {
        name = value;
        if (name.All(char.IsLetter))
        {
            lblName.Text = value;
        }
        else
        {
        }
    } 
}

如果存在无效输入,我如何重新运行此代码?

【问题讨论】:

  • 使用do-while 循环。
  • Form_Load 不是实现该逻辑的好地方。在另一个表单/代码中使用循环,如果输入满足您的条件,则创建此表单。
  • 编写另一个名为 EnterName() 的方法。将您的代码移动到该方法中。从您的 Load 事件处理程序中调用它。从您需要它的任何地方调用它。轻松愉快。

标签: c# string validation inputbox form-load


【解决方案1】:

新建一个方法 public void NameCheck()"然后把你要运行的代码放在那里"

然后在页面加载中放置 NameCheck();调用方法。

因此,如果名称包含数字,则调用 NameCheck();再次在 else 中。

    public void NameCheck()
    {
        string value = "Type here";
        if (globalVariables.InputBox("Name", "Please enter name", ref value) == DialogResult.OK)
        {
            name = value;
            if (name.All(char.IsLetter))
            {
                lblName.Text = value;
            }
            else
            {
                NameCheck();
            }
        }
    }


    private void gameForm_Load(object sender, EventArgs e)
    {
        NameCheck();
    }

【讨论】:

    【解决方案2】:

    您可以使用while 循环

    while(true)
    {
       if (globalVariables.InputBox("Name", "Please enter name", ref value) == DialogResult.OK)
        {
            name = value;
            if (name.All(char.IsLetter))
            {
                lblName.Text = value;
                break;
            }
        }
    }
    

    【讨论】:

    • 我没有投反对票,也没有看到投反对票的理由,但我认为do-while 循环在这里会更好。
    • 我没有这样做,实际上我把它改成了这个,因为它工作得更好@Rahul
    • @Ranga6669,评论不适合你;而是一般。此外,我很清楚你没有投反对票,因为投反对票需要你没有的 250 声望。
    • @Rahul 巨魔阿尔古德。如何使用数字而不是字符串来做到这一点?
    【解决方案3】:
        private void gameForm_Load(object sender, EventArgs e)
        {
            reAsk:
            string value = "Type here";
            if (globalVariables.InputBox("Name", "Please enter name", ref value) == DialogResult.OK)
            {
                name = value;
                if (name.All(char.IsLetter))
                {
                    lblName.Text = value;
                }
                else
                {                      
                    goto reAsk;
                }
            }
        }
    

    【讨论】:

    • 这似乎是最简单的方法,但是当我添加“:reAsk”时,它给了我一条红线并且不起作用这是我没有的变量还是什么? @汗
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-18
    • 2016-02-20
    • 2013-12-26
    • 1970-01-01
    • 2012-09-03
    • 2010-09-18
    相关资源
    最近更新 更多