如何坚持文本框具有值

时间:2011-11-05 07:54:31

标签: c# winforms textbox

我在表单上有一个文本框,在同一表单上有一个按钮。在按钮单击事件上,我想坚持文本框具有Double形式的值。到目前为止我所拥有的是这个 -

 public double getUnitStake(Form frontpage)
    {

        double doubleresult=0;
        bool unitStake;

        foreach (Control c in frontpage.Controls)
        {
            if (c.Name == "tbUnitStake")
            {

                unitStake = double.TryParse( (c as TextBox).Text, out doubleresult);
                if (!unitStake)
                {

                }
                else
                {
                    doubleresult=double.Parse((c as TextBox).Text);

                }



            }
        }


        return doubleresult;
    }

但对于我的生活,如果double.tryparse方法为false,我无法弄清楚该做什么。我想要的是程序执行停止,直到在文本框中输入合适的值。我怎么能达到这个目的呢?感谢所有人和任何帮助。

4 个答案:

答案 0 :(得分:1)

在我看来,您正在验证文本框的内容。因此,您可以使用TextBox控件的验证事件。 (可选)将errorProvider控件连接到它以特别关注错误(闪烁感叹号)。 “e.Cancel”语句将阻止您在输入double之前对表单执行任何其他操作。

   private void textBox1_Validating(object sender, CancelEventArgs e)
    {
        double doubleresult = 0;

        bool result = Double.TryParse(textBox1.Text, out doubleresult);

        if (result)
        {
            errorProvider1.SetError(textBox1, string.Empty);
        }
        else
        {
            errorProvider1.SetError(textBox1, "Must be a Double");
            e.Cancel = true;
        }
    }

答案 1 :(得分:0)

我不了解您的计划的完整要求。

您可以默认禁用该按钮。在文本框的文本更改事件中,检查输入的值是否为double。

一旦确认该值确实是双倍,那么您可以启用该按钮。 这样,除非输入double,否则默认情况下程序执行将暂停。

答案 2 :(得分:0)

你只需要TryParse yor值,如果你的值不是double,这个方法会返回0.0:

public double getUnitStake(Form frontpage)
{

    double doubleresult=0;


    foreach (Control c in frontpage.Controls)
    {
        if (c.Name == "tbUnitStake")
        {

            double.TryParse( (c as TextBox).Text, out doubleresult);
        }
    }


    return doubleresult;
}

答案 3 :(得分:0)

您的代码没有问题,但以下更改

 public double getUnitStake(Form frontpage)
{

    double doubleresult=0;
    bool unitStake;

    foreach (Control c in frontpage.Controls)
    {
        if (c.Name == "tbUnitStake")
        {

            unitStake = double.TryParse( (c as TextBox).Text, out doubleresult);
        }
    }


    return doubleresult;
}

你不需要再次解析“doubleresult”,因为tryparse已经完成了它。您可以使用unitStake变量进一步使用。