У меня есть следующие два обработчика событий для поля EditText, первый работает, а второй - нет. Я предпочел бы, чтобы второй работал, потому что первый обработчик событий требует, чтобы пользователь нажал клавишу ввода, которую, как я подозреваю, не каждый будет делать.Xamarin Android EditText.KeyPress vs EditText.TextChanged events
Первый и работает
private decimal paidAmount;
private EditText EditTextPaidAmount;
EditTextPaidAmount = RootView.FindViewById<EditText>(Resource.Id.editTextAmountPaid);
EditTextPaidAmount.KeyPress += (object sender, View.KeyEventArgs e) =>
{
e.Handled = false;
if (e.Event.Action == KeyEventActions.Down && e.KeyCode == Keycode.Enter)
{
paidAmount = Decimal.Parse(EditTextPaidAmount.Text);
RenderInvoiceTotals();
e.Handled = true;
}
};
Это здесь не работает, он бросает System.FormatException "Недопустимый символ в позиции 0"
EditTextPaidAmount = RootView.FindViewById<EditText>(Resource.Id.editTextAmountPaid);
EditTextPaidAmount.TextChanged += (object sender, Android.Text.TextChangedEventArgs e) =>
{
paidAmount = Decimal.Parse(EditTextPaidAmount.Text, CultureInfo.InvariantCulture);
RenderInvoiceTotals();
};
Спасибо, TryParse кидал же исключение. –
@Val Я обновил ответ. Я использую Xamarin 3.9 и Xamarin.Android 4.20 – angak
Спасибо @ Ангак, это определенно не RenderInvioiceTotals, который бросает исключение, потому что весь этот метод делает отображение текста. Я применил ваш ответ, и он запускается, но как только текст изменяется, он через исключение –