Добавление с использованием одного TextBox - PullRequest
1 голос
/ 11 июля 2011

Я пишу приложение ac # windowsform для добавления двух записей в одно текстовое поле.

У меня есть 1 текстовое поле, 1 кнопка добавления и 1 кнопка результата.

Мне нужно добиться следующего алгоритма,

  1. Пользователь вводит нет в текстовом поле.Он будет храниться в int n1.

  2. Пользователь нажимает кнопку добавления.В это время содержимое textbox.text будет очищено, и пользователь должен иметь возможность ввести значение secound в нем.

  3. Это значение звука будет сохранено в int n2.

  4. Теперь, когда пользователь нажимает на кнопку результата, он должен получить int result=n1+n2

Я написал следующее в событии нажатия кнопки добавления кнопок,

n1=convert.Int32(textbox1.text); 

textbox1.text=""; 


n2=convert.Int32(textbox1.text);//exception occures here 

И событие нажатия кнопки результата имеет,

textbox1.text=result.tostring(); 

Я сократил работу этой программы и обнаружил, что это связано с NULL присвоением значения int n2.

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

Есть ли способ передать значение textbox.txt через пользователя только через поле textbox?

Есть ли какое-либо свойство текстового поля, которое мне нужно установить?

Я очень новичок в .net!Пожалуйста помоги!

Заранее спасибо за ваше внимание!

Ответы [ 5 ]

3 голосов
/ 11 июля 2011

перемещение n2 = Convert.Int32(textbox1.Text); к событию нажатия кнопки результата

Добавление события нажатия кнопки:

n1=convert.Int32(textbox1.text);   
textbox1.text=""; 

событие нажатия кнопки результата:

n2=convert.Int32(textbox1.text);
result=n1+n2;
textbox1.text=result.tostring(); 
1 голос
/ 11 июля 2011

Ваш код содержит пару ошибок:

  1. Вы используете Int32 Convert.ToInt32(String), что плохо, поскольку выдает исключение, если пользователь вводит что-то, что не может быть приведено кInt32, вы должны использовать Boolean Int32.TryParse(String, out Int32) вместо этого и проверить, успешно ли преобразование.

  2. Вы звоните n2 = Convert.ToInt32(textbox1.Text); сразу после установки textbox1.Text = ""; и это тоже плохо, потому что он не будет ждать ввода пользователя, он сразу попытается преобразовать пустую строку в целое число, что приведет к исключению.

  3. Вы не можете знать, когда пользователь закончил вводить свой номер, поэтому вам нужно полагаться на что-то внешнее по отношению к TextBox, чтобы сообщить, что вы должны выполнить добавление.

Попробуйте следующее:

  • Поместите TextBox.
  • Поместите Button.
  • Инициализируйте целочисленную переменную grandTotal в ноль.
  • Когда пользователь нажимает кнопку, анализирует содержимое TextBox во временном целочисленном значении «submitValue».затем суммируйте эту временную переменную с переменной grandTotal и отобразите полученное значение переменной grandTotal.

Таким образом, вы сможете непрерывно выполнять операцию сложения с предыдущим итогом..

Пример

Глобальная переменная:

protected Int32 GrandTotal = 0;

Обработчик события клика Button:

Int32 currentValue = 0;

if (Int32.TryParse(userValue.Text, out currentValue))
{
    GrandTotal += currentValue;

    MessageBox.Show(String.Format("The new total is: {0}", GrandTotal));
}
else
{
    MessageBox.Show("Invalid value!");
}
1 голос
/ 11 июля 2011

посмотрите на следующий код

      private int i = 0;
    private int[] a = new int[2];
    private void button1_Click(object sender, EventArgs e)
    {
        int b;
        if(Int32.TryParse(textBox1.Text, out b))
        {
            a[i] = b;
            i++;
            textBox1.Text = "";
        }
        else
        {
            MessageBox.Show(@"Incorrect number");
        }


    }

    private void resultbutton2_Click(object sender, EventArgs e)
    {
        int sum = a[0] + a[1];
        MessageBox.Show("Sum: " + sum);
    }
}
1 голос
/ 11 июля 2011

попробуйте что-то вроде этого:

private int result=0;

addMethod()
{
    //here you can use also int.TryParse
    if(string.isnullorempty(textbox1.text.trim()))
    textbox1.text="0";

    result+=convert.toint32(textbox1.text);

    textbox1.text=string.empty;
}

resultMethod()
{
    textbox1.text=result.tostring();
}
0 голосов
/ 11 июля 2011

Я понятия не имею, почему вы делаете это таким образом.

Тем не менее вы можете сделать это как Объявить n1, n2 как int? на уровне формы

Затем в вашем Добавитьсобытие click, сделайте это таким образом

if (! n1.HasValue)
{
    n1 = int.Parse(textBox1.Text);                
}
n2 = int.Parse(textBox1.Text);
textBox1.Text = "";

, если вы собираетесь сделать это для lotz числа, тогда используйте List<int?> myIntList = new List<int?>(), и ваше событие добавления будет

myIntList.Add(int.Parse(textBox1.Text));
textBox1.Text = "";

и результатint? result = myIntList.Sum();

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