我正在尝试将form2中声明的文本框放在form3中。在form2上我有
public partial class Form2 : Form
{
public static string SetvalueforTextBox1;
public static string SetvalueforTextBox2;
}
以及
public void TextBox1_TextChanged(object sender, EventArgs e)
{
SetvalueforTextBox1 = TextBox1.Text;
SetvalueforTextBox2 = TextBox2.Text;
}
现在在我的form3上我想在form2
上显示用户输入值的乘法private void label1_Click(object sender, EventArgs e)
{
label1.Text = double.Parse(Form2.SetvalueforTextBox1)
* double.Parse(Form2.SetvalueforTextBox1).ToString();
}
我得到错误"运营商' *'不适用于类型' double和'方法的操作数'型
请帮帮我
答案 0 :(得分:3)
你的问题在这里:
double.Parse(Form2.SetvalueforTextBox1).ToString()
首先解析字符串,然后再转换为字符串10。删除.ToString()
我想你想写:
label1.Text = (double.Parse(Form2.SetvalueforTextBox1) * double.Parse(Form2.SetvalueforTextBox1)).ToString();
在第一种情况下,你尝试乘以double和string,在第二种情况下你将乘法结果转换为字符串。
答案 1 :(得分:1)
在第
行label1.Text = double.Parse(Form2.SetvalueforTextBox1) * double.Parse(Form2.SetvalueforTextBox1).ToString();
你正在做以下事情(让我们把它分解):
ToString()
。这会给你错误。
你需要做的是封装乘法并得到结果als字符串,如下所示:
label1.Text = (double.Parse(Form2.SetvalueforTextBox1) * double.Parse(Form2.SetvalueforTextBox1)).ToString();
这样,乘法的结果将作为字符串返回并分配。
答案 2 :(得分:0)
似乎您在使用double.Parse
之前忘记用括号括起ToString
方法:
label1.Text = (double.Parse(Form2.SetvalueforTextBox1) * double.Parse(Form2.SetvalueforTextBox1)).ToString();
这是一个正确的分配顺序,因为double.Parse
首先评估,然后将它们相乘& ToString
方法将double
值转换为label1.Text
属性所需的字符串。
请注意,运算符优先级决定了执行流程:
double.Parse(Form2.SetvalueforTextBox1)
将string
值转换为第一个操作数的double
。
double.Parse(Form2.SetvalueforTextBox1).ToString()
将字符串转换为double,然后ToString
将其值恢复为字符串作为第二个操作数。
运营商*
尝试乘以double
& string
值,在此上下文中无效(操作数必须具有相同的数据类型才能执行乘法)。