У меня есть простая форма, которая принимает 9 десятичных чисел из 9 текстовых полей, и я поместил некоторую проверку, чтобы пользователи могли вводить только десятичные числа и ничего больше. Теперь проблема, с которой я сталкиваюсь, - установить курсор в текстовом поле, у которого не было десятичного числа после отображения сообщения об ошибке в заявлении try-catch?Поместить курсор в текстовое поле с ошибкой
Вот мой код:
private void btn_Aceptar_Click(object sender, EventArgs e)
{
POI GPI = new POI();
POI VIM = new POI();
POI ST = new POI();
try
{
GPI.POI_x = Convert.ToDecimal(txt_GPIx.Text);
GPI.POI_y = Convert.ToDecimal(txt_GPIy.Text);
GPI.POI_z = Convert.ToDecimal(txt_GPIz.Text);
VIM.POI_x = Convert.ToDecimal(txt_VIMx.Text);
VIM.POI_y = Convert.ToDecimal(txt_VIMy.Text);
VIM.POI_z = Convert.ToDecimal(txt_VIMz.Text);
ST.POI_x = Convert.ToDecimal(txt_STx.Text);
ST.POI_y = Convert.ToDecimal(txt_STy.Text);
ST.POI_z = Convert.ToDecimal(txt_STz.Text);
}
catch (Exception)
{
MessageBox.Show("Ingrese solamente números en las variables GPI/VIM/ST", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
//Set the cursor in the first textbox that had no decimals..
return;
}
Comisurales Comisurales = new Comisurales();
Comisurales.calculo_coord_comisurales(PC, AC, IHP, GPI, VIM, ST);
}
Позвольте мне добавить, что у меня есть функция, чтобы обеспечить пользователю будет ограничен только для ввода знаков после запятой, но я был не в состоянии понять, как избежать «» только или это, например: «1.»
В дополнение к моему вопросу, вот что получает подтверждено каждый раз, когда пользователь пресс ключ в текстовом поле:
private void ValidarDecimal(object sender, KeyPressEventArgs e)
{
// permitir 0-9, backspace, y decimal
if (((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar != 46))
{
e.Handled = true;
return;
}
// chequear solamente un decimal
if (e.KeyChar == 46)
{
if ((sender as TextBox).Text.IndexOf(e.KeyChar) != -1)
e.Handled = true;
}
}
Я думаю, у меня есть 2 пути решения моей проблемы. Номер один может найти способ обеспечить, чтобы пользователь никогда не вводил что-то странное в текстовое поле (которое я сделал частично), а номер 2 - использовать try-catch с текущими ограничениями, о которых я упоминал выше, а затем указать пользователю в текстовое поле, в котором есть проблемы, оба приемлемы.