Как передать данные из формы в метод класса? - PullRequest
0 голосов
/ 03 мая 2018

Я не могу понять, как передать данные из TextBox формы в метод класса для расчета, а затем вернуть результат обратно в форму для отображения в TextBox или ListBox или как угодно. Я продолжаю получать

Невозможно неявно преобразовать тип int в System.Windows.Forms.Textbox

исключение в моем классе.

Для моей настройки у меня есть форма с тремя текстовыми полями (TxtFirstNumber, TxtSecondNumber, TxtResult) и кнопкой (BtnCalculate). Когда я нажимаю кнопку, я хочу, чтобы два числа были переданы в класс для добавления, и результат должен появиться в текстовом поле формы TxtResult. У меня есть форма с именем "form1" и класс с именем "class1".

Это мой код:

class class1
{
    public static void AddTwoNumbers(int FirstNumber, int SecondNumber, ref TextBox TxtResult)
    {
        TxtResult = FirstNumber + SecondNumber;
    }
}

public partial class form1 : Form
{
    private void BtnCalculate_Click(object sender, EventArgs e)
    {
        Class1.AddTwoNumbers(Convert.ToInt32(TxtFirstNumber.Text), Convert.ToInt32(TxtSecondNumber.Text), ref TxtResult);
    }
}

Ответы [ 4 ]

0 голосов
/ 03 мая 2018

Не передавайте элементы управления пользовательского интерфейса бэкэнду (где ваша логика). Вместо этого запросите у внутреннего сервера результат, чтобы клиент мог решить, что с ним делать:

internal static class Calculator
{
    public static int Add(int firstNumber, int secondNumber)
    {
        return firstNumber + secondNumber;
    }
}

public partial class Form1 : Form
{
    private void BtnCalculate_Click(object sender, EventArgs e)
    {
        int firstNumber;
        int secondNumber;

        if (!int.TryParse(TxtFirstNumber.Text, out firstNumber))
        {
            MessageBox.Show("first number is not a number");
            return;
        }
        else if (!int.TryParse(TxtSecondNumber.Text, out secondNumber))
        {
            MessageBox.Show("second number is not a number");
            return;
        }

        TxtResult.Text = Calculator.Add(firstNumber, secondNumber).ToString();
    }
}

Как видите, я также обновил имена, чтобы они отражали их значение и соответствовали стандартным соглашениям c #.

0 голосов
/ 03 мая 2018

TxtResult - элемент управления TextBox. Вы назначаете сумму двух чисел (целое число) для этого элемента управления. Вы не можете сделать это. Они не одного типа.

Однако вы можете преобразовать целое число в строку, а затем присвоить эту строку свойству Text элемента управления TextBox следующим образом:

TxtResult.Text = (FirstNumber + SecondNumber).ToString();
0 голосов
/ 03 мая 2018

Держите логику отдельно от презентации

class class1
{
    public static int AddTwoNumbers(int FirstNumber, int SecondNumber)
    {
        return FirstNumber + SecondNumber;
    }
}

public partial class form1 : Form
{
    private void BtnCalculate_Click(object sender, EventArgs e)
    {
       int v1 = Convert.ToInt32(TxtFirstNumber.Text);
       int v2 = Convert.ToInt32(TxtSecondNumber.Text);
       int result = Class1.AddTwoNumbers(v1, v2);
       TxtResult.Text = result.ToString();
    }
}
0 голосов
/ 03 мая 2018

Вам необходимо использовать свойство text текстового поля. Ответ в сообщении об ошибке "Cannot inplicitly convert type 'int' to 'System.Windows.Forms.Textbox'"

TxtResult.Text = (FirstNumber + SecondNumber).ToString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...