0

我想将表单中文本框的值发送到其他类。我想在文本框中输入一个数字并再次传递这个数字。但我只是将数字 0 作为输出。通过单击按钮,它提交输入并将其传递(理论上)。

我的代码如下所示:

public int ReturnValue;

public void button1_Click(object sender, EventArgs e)
{
    ReturnValue = int.Parse(textBox1.Text);
}

这是来自另一个类的代码片段,它在一个案例构造中。

case "&Create Class Instance":
    MultiplyInstance m = new MultiplyInstance();
    m.Show();
    int multiplier = m.ReturnValue;

变量乘数的值应该是我在文本框中输入的值。但是当我打印它时它总是0。我究竟做错了什么?

4

2 回答 2

2

使用ShowDialog而不是Show(), 你得到的是一个整数的默认值,因为你的表单过程在你显示表单的同时继续进行。

case "&Create Class Instance":

using(MultiplyInstance m = new MultiplyInstance())
{
    m.ShowDialog();
    int multiplier = m.ReturnValue;
}

ShowDialog使表单模式化,因此它会在您的表单打开时阻止执行(这也意味着您在此表单打开时无法访问您的其他表单)

于 2013-09-03T14:42:10.600 回答
1

将 m.Show() 替换为 m.ShowDialog()。

case "&Create Class Instance":
            MultiplyInstance m = new MultiplyInstance();
            m.ShowDialog();
            int multiplier = m.ReturnValue;

Show() 一个表单将打开表单并立即执行代码中的下一行 int multiplier = m.returnValue ,此时仍为 0。

还将按钮单击事件更改为

private void button1_Click(object sender, EventArgs e)
{
    ReturnValue = int.Parse(textBox1.Text);
    Close();
} 

因为您必须关闭表格才能返回课堂。

您还应该将 button1_click 设为私有,因为它只能由表单执行。

于 2013-09-03T14:47:17.837 回答