将值从Winform传递给Class

时间:2013-09-03 14:37:33

标签: c# winforms button

我想将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。我做错了什么?

2 个答案:

答案 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设为私有,因为它只能由表单执行。