C # Почему эта подстрока не работает? Ошибка: входная строка была в неправильном формате - PullRequest
1 голос
/ 31 января 2009

Проблема с преобразованием значения в поле txt, но почему?

string strChar = strTest.Substring(0, Convert.ToInt16(txtBoxValue.Text));

Ошибка: входная строка была в неправильном формате.

Спасибо всем.

Ответы [ 5 ]

5 голосов
/ 31 января 2009

txtBoxValue.Text, вероятно, не содержит действительный int16.

1 голос
/ 31 января 2009

Одна вещь, которую вы можете попробовать, это использовать TryParse

Int16 myInt16;
if(Int16.TryParse(myString, out myInt16)
{
   string strChar = strTest.Substring(0, myInt16);
}
else
{
   MessageBox.Show("Hey this isn't an Int16!");
}
1 голос
/ 31 января 2009

Хороший способ избежать этой ошибки - использовать .tryParse (.net 2.0 и выше)

int subLength;

if(!int.TryParse(txtBoxValue.Text,out subLength)
   subLength= 0;

string strChar = strTest.Substring(0, subLength);

Таким образом, если txtBoxValue.Text не содержит действительное число, тогда subLength будет установлено в 0;

0 голосов
/ 31 января 2009

ASP.NET предлагает несколько элементов управления для проверки ввода пользователя. Вы должны использовать что-то вроде CompareValidator или RegularExpressionValiditor в вашей WebForm, если вы ожидаете ввода определенного типа, например, Integer.

0 голосов
/ 31 января 2009

Пара причин, по которым код может быть неисправен. Чтобы по-настоящему закрепить это, поместите свое короткое преобразование в новую строку, например:

short val = Convert.ToInt16(txtBoxValue.Text);
string strChar = strTest.Substring(0, val);

Вероятно, значение в txtBoxValue.Text не является коротким (оно может быть слишком большим или содержать буквенные символы). Если он действителен и ему назначено значение val, то в strTest может не хватить символов для работы подстроки, хотя обычно это возвращает другую ошибку. Кроме того, второй параметр подстроки может потребовать int (не уверен, сейчас не могу проверить), поэтому вам может потребоваться преобразовать в int32 вместо 16.

Какое значение txtBoxValue.Text во время ваших тестов?

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