将值从Winform传递给Class

本文关键字:Class Winform | 更新日期: 2023-09-27 18:29:58

我想将一个Value从Form中的Textbox发送到另一个类。我想在文本框中键入一个数字,然后再把这个数字传回来。但我只得到数字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;

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

将值从Winform传递给Class

使用ShowDialog而不是Show(),您得到的是一个整数的默认值,因为您的表单处理在显示表单时仍在继续。

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

ShowDialog使表单成为模态表单,因此它将在表单打开时阻止执行(这也意味着在该表单打开时无法访问其他表单)

用m.ShowDialog()替换m.Show()。

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

显示()一个窗体将打开该窗体并立即执行代码中的下一行int乘数=m.returnValue在这一点上为stiil 0。

同时将按钮点击事件更改为

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

因为你必须关闭表格才能回到你的课堂。

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