Как настаивать на том, что текстовое поле имеет значение - PullRequest
0 голосов
/ 05 ноября 2011

У меня есть текстовое поле на форме и кнопка на той же форме.На событие нажатия кнопки я хочу настаивать на том, что текстовое поле имеет значение в виде двойного.Пока у меня есть вот что -

 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 ложный.Я хочу, чтобы выполнение программы было остановлено до тех пор, пока в текстовое поле не будет введено подходящее значение.Как я могу достичь этого, пожалуйста?Спасибо за все и любую помощь.

Ответы [ 4 ]

1 голос
/ 05 ноября 2011

Мне кажется, вы проверяете содержимое текстового поля. Поэтому вы можете использовать проверяющее событие элемента управления TextBox. При желании подключите к нему элемент управления errorProvider, чтобы уделить особое внимание ошибке (мигающий восклицательный знак). Заявление "e.Cancel" не позволит вам делать что-либо еще с вашей формой, пока не будет введено двойное число.

   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;
        }
    }
0 голосов
/ 05 ноября 2011

вам просто нужно значение TryParse yor, если ваше значение не в два раза больше, этот метод вернет вам 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;
}
0 голосов
/ 05 ноября 2011

Ваш код в порядке, за исключением следующего изменения

 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 для дальнейшего использования.

0 голосов
/ 05 ноября 2011

Мне не известны полные требования вашей программы.

Вы можете отключить кнопку по умолчанию.В событии изменения текста текстового поля проверьте, является ли введенное значение двойным.

Как только вы убедились, что значение действительно двойное, вы можете включить кнопку.Таким образом, выполнение программы по умолчанию останавливается, если только не введено двойное число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...