c#从其他形式获取价值

时间:2011-06-24 23:39:19

标签: c# forms

情况我有:text1(输入你的名字)在form1上。从按钮上的那个form1点击我转到form2。从form2按钮单击到form3。在按钮上的form3上单击我需要在用户写下的form1上的文本框中写入空文本框值。 例如:在textbox1中的form1上,我写下了我的名字“Djuzla”。当我转到form3并单击按钮以查看我在form1中写的名称时,它应显示在空textbox3 form3“Djuzla”中。

我现在停留了这几个小时,这是一个愚蠢的问题,但我不知道接下来要做什么......在网上从zillion theards尝试了所有:p

5 个答案:

答案 0 :(得分:2)

您可以修改表单的构造函数以再接受一个参数来保存textBox的值。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我已经回答过类似的问题......既然你要从表格1转到2到3,你基本上可以采用相同的方法在这个解决方案中根据需要将值分级并返回,而不仅仅是单向...

My Other Solution to similar question...

答案 4 :(得分:0)

传递值的解决方案可能会非常草率,因为无法保证文本框中的值在您已经将其传递到某个位置后不会更改。相反,传递一个函数更为明智,该函数在调用时解析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);
    }
}