我想将Form中文本框中的值发送到其他类。我想在文本框中输入一个数字并再次传回这个数字。但我只是将数字0作为输出。通过单击按钮,它会提交输入并将其传递(理论上)。
我的代码如下所示:
public int ReturnValue;
public void button1_Click(object sender, EventArgs e)
{
ReturnValue = int.Parse(textBox1.Text);
}
这是另一个类的代码,它是一个case构造。
case "&Create Class Instance":
MultiplyInstance m = new MultiplyInstance();
m.Show();
int multiplier = m.ReturnValue;
变量乘数的值应该是文本框中的值I类型。但是当我打印它时它总是0。我做错了什么?
答案 0 :(得分:2)
使用ShowDialog
代替Show()
,您获得的是整数的默认值,因为在您显示表单时,表单流程仍在继续。
case "&Create Class Instance":
using(MultiplyInstance m = new MultiplyInstance())
{
m.ShowDialog();
int multiplier = m.ReturnValue;
}
ShowDialog
制作表单模式,以便在您的表单打开时阻止执行(这也意味着在此表单打开时您无法访问其他表单)
答案 1 :(得分:1)
用m.ShowDialog()替换m.Show()。
case "&Create Class Instance":
MultiplyInstance m = new MultiplyInstance();
m.ShowDialog();
int multiplier = m.ReturnValue;
显示()表单将打开表单并立即执行代码中的下一行 int multiplier = m.returnValue 在这一点上,这是很好的。
同时将Button Click事件更改为
private void button1_Click(object sender, EventArgs e)
{
ReturnValue = int.Parse(textBox1.Text);
Close();
}
因为你必须关闭表格才能回到你的班级。
您还应该将button1_click设为私有,因为它只能由表单执行。