我无法弄清楚如何将数据从表单的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);
}
}
答案 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();
}
}