WP7: Какой самый простой способ преобразовать группу текстовых полей из текста в число или десятичное значение? - PullRequest
0 голосов
/ 21 июня 2011

Итак, у меня есть пользователи, которые вводят числа в несколько текстовых полей, и мне нужно проверить, что они не равны нулю, и преобразовать их в десятичную. Есть ли более простой способ сделать это, чем отдельный IF для каждого текстового поля?

if (txtBoxAuto1.Text != null)
{

    String varStrTxtBox1 = txtBoxAuto1.Text;
    decimal varTxtBox1 = Decimal.Parse(varStrTxtBox1);


}

Я попытался поставить «и» после первого текстового поля, но мне это не понравилось.

Ответы [ 3 ]

1 голос
/ 21 июня 2011

Когда я делал такие вещи, я добавлял текстовые поля в список, чтобы их обдумывать. Или, если у вас есть все текстовые поля на панели, вы можете зациклить их, как

foreach(Control c in this.panel1.Controls)
        {
            if (c.GetType() == typeof(TextBox) && c.Text != String.Empty)
            {
                decimal myValue = Convert.ToDecimal(c.Text);
            }
        }

Или я упустил смысл?

1 голос
/ 21 июня 2011

Логическое И в C # - &&.

if (txtBoxAuto1.Text != null && txtBoxAuto2.Text != null ...)

Если все текстовые поля не должны быть NULL, просто добавьте логическое И в условие оператора if. В противном случае, если некоторые из них могут быть NULL, а не другие, вам понадобится отдельный оператор IF для каждого из текстовых полей, который может быть NULL.

0 голосов
/ 21 июня 2011

Предполагая, что вы используете WPF / Silverlight в WP7: вероятно, лучше следовать шаблону view-view-модели ( MVVM ), как и в других приложениях WPF / Silverlight, и использовать привязку данных.

Я бы подошел к этому с помощью модели представления, которая выставляет:

  • свойство строки "external" (для представления) с именем базы данных, называемое FirstNumberText или что угодно, - это то, чтопривязан к текстовому полю.
  • свойство внутреннего номера (101) FirstNumber, которое анализирует FirstNumberText на лету и содержит любую другую бизнес-логику - вы будете вызыватьэто когда вам нужно фактическое число Decimal.

Это также означает, что неверные записи не приведут к сбою привязки данных, поэтому вы можете тривиально использовать встроенную функцию проверки привязки данных (в том числе удобную *)1017 * атрибуты ) для доставки дружественного сообщения об ошибке пользователю, если введенный текст пуст или не подходит каким-либо другим образом (отрицательный, слишком большой / маленький и т. Д.).

Свы используете MVVM вместо прямого взаимодействия с элементами управления из представления, вы также можете радикально изменить интерфейс, не беспокоясь о нарушении логики (удаляя / переименовывая элементы управления).

...