c#从其他形式获取值

本文关键字:获取 其他 | 更新日期: 2023-09-27 18:00:26

我的情况:表单1上的文本框(用于输入您的姓名)。从表格1点击按钮,我转到表格2。从表格2按钮单击表格3。在表单3上单击按钮,我需要将用户写下的表单1上文本框中的空文本框值写入。例如:在表格1的文本框1中,我写下我的名字"Djuzla"。当我进入表格3并点击按钮查看我在表格1中写的名字时,它应该显示在表格3的空文本框"Djuzla"中。

我现在被困在这几个小时里,这是个愚蠢的问题,但我不知道下一步该怎么办。。尝试了网络上无数个应用程序中的所有应用程序:p

c#从其他形式获取值

您可以修改表单的构造函数,使其多使用一个参数来保存textBox的值。

将值存储在属性中。如果您正在为asp.net进行开发,请使用session或ViewState。我理解你的问题了吗?

您可以从页面访问PreviousPage属性,或者设置会话变量(或cookie),然后在页面加载等时检索它,但最简单的解决方案是使用页面上的PreviousPage特性来访问上一页的数据。

我也有类似的回答。。。由于您要从Form 1到Form 2再到Form 3,因此在该解决方案中基本上可以采用相同的方法,根据需要级联值,而不仅仅是一种方式。。。

我对类似问题的其他解决方案。。。

传递值的解决方案可能会变得非常草率,因为无法保证在您将值传递到某个位置后,文本框内的值不会更改。相反,更明智的做法是传递一个函数,该函数在被调用时解析TextBox中的值,这将导致始终获得最新的值。

void button1_Click() {
    form2 = new Form2(() => textBoxName.Text);
}
class Form2 : Form {
    ...
    public Form2(Func<String> nameResolver) {
        form3 = new Form3(nameResolver);
    }
    void button1_Click(...) {
       form3.Show()
    }
}
class Form3 : Form {
    Func<String> nameResolver;
    public Form3(Func<string> nameResolver) {
        this.nameResolver = nameResolver;
    }
    void button1_Click(...) {
        this.textBoxName = nameResolver.Invoke();
    }
}

如果您最终需要在各种表单之间共享一个或两个以上的组件,那么最好简单地将表单本身传递给子表单。例如

void button1_Click(...) {
    form2 = new Form2(this);
}
class Form2 : Form {
    Form1 parent;
    public Form2(Form1 parent) {
        this.parent = parent;
    }
    void button1_Click(...) {
        form3 = new Form3(parent);
    }
}