如何将数据从Form传递给Class方法?

时间:2018-05-02 22:11:56

标签: c# winforms

我无法弄清楚如何将数据从表单的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 :(得分:2)

您需要使用文本框的文本属性。答案在错误消息"Cannot inplicitly convert type 'int' to 'System.Windows.Forms.Textbox'"

TxtResult.Text = (FirstNumber + SecondNumber).ToString();

答案 1 :(得分:2)

不要将UI控件传递给后端(逻辑所在的位置)。相反,请向后端询问结果,以便前端可以决定如何处理它:

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#标准惯例。

答案 2 :(得分:1)

TxtResult是一个TextBox控件。您正在为该控件分配两个数字(整数)的总和。你不能这样做。它们的类型不同。

然而,您可以将整数转换为字符串,然后将该字符串分配给TextBox控件的Text属性,如下所示:

TxtResult.Text = (FirstNumber + SecondNumber).ToString();

答案 3 :(得分:0)

将逻辑与演示分开

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();
    }
}