C# C如何在表单加载中重新运行代码

C# C如何在表单加载中重新运行代码,c#,string,validation,inputbox,form-load,C#,String,Validation,Inputbox,Form Load,对于我正在编写的程序,我想询问一个名称,如果输入有数字或其他不需要的输入,则循环并再次执行 这是我当前的代码 private void gameForm_Load(object sender, EventArgs e) { string value = "Type here"; if (globalVariables.InputBox("Name", "Please enter name", ref value) == DialogResult.OK) {

对于我正在编写的程序,我想询问一个名称,如果输入有数字或其他不需要的输入,则循环并再次执行

这是我当前的代码

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
        {
        }
    } 
}
如果存在无效输入,如何重新运行此代码?

您可以使用while循环


创建一个新方法public void namecheck,然后将要运行的代码放在其中

然后,在你的页面加载中,你放入了姓名检查;调用该方法

因此,如果名称包含数字,则称为名称检查;又在另一个地方

    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();
    }

使用do while循环。Form_加载不是实现该逻辑的好地方。在另一个表单/代码中使用循环,如果输入满足您的条件,则创建此表单。编写另一个名为EnterName的方法。将代码移动到该方法中。从加载事件处理程序调用它。从你需要它的地方给它打电话。很简单。我没有投反对票,我也不认为有理由投反对票,但我认为在这里做一个do-while循环会更好。我没有做,实际上我把它改成了这个,因为它工作得更好@Rahul@Ranga6669,评论不适合你;相当普遍。而且,我很清楚你们并没有投反对票,因为投反对票需要250个你们没有的名声。@Rahul troll algud。如果使用数字而不是字符串,该怎么做?这似乎是最简单的方法,但当我添加:reAsk时,它会给我一条红线,不起作用这是我没有的变量还是什么@可汗
    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;
            }
        }
    }
    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();
    }