日期:2014-05-17  浏览次数:20982 次

窗体间如何跳转并返回?
winform窗体程序,现有2个窗体分别为A, B
A窗体有一个按钮和textbox框
当点击按钮,则带着部分信息跳转到B窗体(这一步我会)
然后在B窗体里进行一些简单操作(比如获取一个值)
要求将这个获取的值在A窗体的textbox框里显示出来

请问 重新返回到A窗体并显示值的这个操作该怎么处理??我要求不能重新打开A窗体(因为我之前就没关闭A窗体),只是textbox能显示值就行




------解决方案--------------------
在B窗体定义一个属性,比窗体点“确定”按钮时,给这个属性赋值,然后A窗体取B窗体这个属性值给A窗体的TextBox
大致代码如下:

B窗体:
public string BValue{get;set;}

private void btnOK_Click(sender object,EventArgs e)
{
    BValue="要赋给A的TextBox值";
   this.DialogResult=DialogResult.OK; //表示确定动作
   this.Close();
}

A窗体:
using(FormB frm=new FormB())
{
//此处把A的信息给B(你会我就不写了)
if(frm.ShowDialog()==DialogResult.OK) //表示B确定动作
{
    textbox1.Text=frm.BValue; //将B的值给A的textbox
}
}
------解决方案--------------------
这个问题不赘述了
直接上篇文章《winform窗体间传值 》看了楼主就明白了
http://www.cnblogs.com/tomin/archive/2009/02/25/1397677.html
------解决方案--------------------
属性是一种解决办法,通过事件也可以
------解决方案--------------------
把A作为Form参数传递给B,在B里面操作即可!
------解决方案--------------------
1L的代码是可行的。我在给你贴一种通过事件的方式来实现的代码。

private void button1_Click(object sender, EventArgs e)
        {
            //Process.Start(appName, "ve");
            Form8 frm = new Form8();
            frm.UpdateFormData += new EventHandler<EventInfo>(frm_UpdateFormData);
            frm.ShowDialog();
        }

        void frm_UpdateFormData(object sender, EventInfo e)
        {
            this.textBox1.Text = e.str1;
            this.textBox2.Text = e.str2;
        }


namespace ApiDemo
{
    public partial class Form8 : Form
    {
        public event EventHandler<EventInfo> UpdateFormData;

        public string testValue { get; set; }

        public Form8()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (UpdateFormData != null)
            {
                EventI