Преобразовать строку в целое число - PullRequest
3 голосов
/ 20 мая 2009

Мне нужна помощь с моим кодом. Я хотел бы написать только цифры / целые числа в моем текстовом поле и хотел бы отобразить это в моем списке.

Мой код в порядке? Это похоже на ошибку.

    int yourInteger;
    string newItem;

    newItem = textBox1.Text.Trim();

    if (newItem == Convert.ToInt32(textBox1.Text))
    {
        listBox1.Items.Add(newItem);
    }

==== Обновление:

Вот так теперь выглядит мой код. Мой вопрос, может ли listBox обрабатывать тип данных "long"? Потому что, когда я набрал номер 20 000 000, я получил 20-часовой стакан с часами. Но когда я попробовал это с консолью, я получил ответ. Поэтому я не уверен, какой элемент может обрабатывать тип данных "long".

    string newItem;
    newItem = textBox1.Text.Trim();

    Int64 num = 0;
    if(Int64.TryParse(textBox1.Text, out num))
    {
        for (long i = 2; i <= num; i++)
        {
            //Controls if i is prime or not
            if ((i % 2 != 0) || (i == 2))
            {
                listBox1.Items.Add(i.ToString());
            }

        }
    }


    private void btnClear_Click(object sender, EventArgs e)
    {
        listBox1.Items.Clear();
    }

Ответы [ 7 ]

14 голосов
/ 20 мая 2009
int result = int.Parse(textBox1.Text.Trim());

Если вы хотите проверить правильность:

int result;
if (int.TryParse(textBox1.Text.Trim(), out result)) // it's valid integer...
   // int is stored in `result` variable.
else
   // not a valid integer
3 голосов
/ 20 мая 2009

Используйте это:

    int yourInteger;
    string newItem;

    newItem = textBox1.Text.Trim();
    Int32 num = 0;
    if ( Int32.TryParse(textBox1.Text, out num))
    {
        listBox1.Items.Add(newItem);
    }
    else
    {
        customValidator.IsValid = false;
        customValidator.Text = "You have not specified a correct number";
    }

Предполагается, что у вас есть customValidator.

1 голос
/ 20 мая 2009

Используйте int.TryParse () для проверки, содержит ли строка целочисленное значение.

0 голосов
/ 20 мая 2009

Чтобы быть точным в том, почему ваш код не может скомпилироваться, это потому, что вы сравниваете строку (newItem) с результатом Convert.ToInt32, который является целым числом, которое он не позволит вам сделать. Также Convert.ToInt32 вызовет исключение, если переданная строка не является числом.

Вы можете попробовать использовать int.TryParse или написать простое регулярное выражение для проверки правильности ввода:

int i;
bool isInteger = int.TryParse(textBox1.Text,out i);

или

bool isInteger = System.Text.RegularExpressions.Regex.IsMatch("^\d+$", textBox1.Text);
0 голосов
/ 20 мая 2009

Вы можете сделать:

Convert.ToInt32(input);

Для более длинной функции, используя это вы можете посмотреть на: http://msdn.microsoft.com/en-us/library/bb397679.aspx

По сути, он проверяет, является ли строка нулевой, а затем вызывает int.Parse. Это также будет работать в WindowsCE, в котором нет int.TryParse.

0 голосов
/ 20 мая 2009

textBox1.Text не может содержать допустимое строковое представление целого числа (или это просто пустая строка). Чтобы обойти это, используйте Int32.TryParse().

0 голосов
/ 20 мая 2009

Вы проверяете пустую строку?

int yourInteger;
string newItem;
newItem = textBox1.Text.Trim();

if(newItem != string.Empty)
{
   if ( newItem == Convert.ToInt32(textBox1.Text))
   {
      listBox1.Items.Add(newItem);
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...