| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5077 人关注过本帖
标题:如何关闭窗口1后,把窗口1的某个值传给窗口2?
只看楼主 加入收藏
sundayforday
Rank: 1
等 级:新手上路
帖 子:7
专家分:2
注 册:2012-10-8
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:8 
如何关闭窗口1后,把窗口1的某个值传给窗口2?
窗口1有一个关闭按钮和一个string数值,点关闭后,会打开窗口2,并关闭自身,我在窗口LOAD事件里面无法获取窗口1里面的string的数值,隐藏后可以获取,但是关闭后无法获取。请问可以在关闭窗口1的情况下,打开窗口2后获取数值吗?是怎么实现的?把数值存放在内存中,在让窗口2读取?请给出相关的代码....我是初学C#的...不要讲的太复杂...真心看不懂.....
搜索更多相关主题的帖子: 如何 
2012-10-13 12:20
何事惊慌
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:220
专家分:499
注 册:2008-7-2
收藏
得分:4 
在窗口2几个属性,创建的时候带上属性或者直接写个静态的类去保存给窗口2的构造函数重写,网上很多种这个例子

QQ:860234001
编程交流群:236949758
2012-10-13 17:58
sundayforday
Rank: 1
等 级:新手上路
帖 子:7
专家分:2
注 册:2012-10-8
收藏
得分:0 
我在网上找的项目都是ASP网站的项目。一点也看不懂...我要的是C#的项目一个都找不到,我问的是windows应用程序,不是ASP...

[ 本帖最后由 sundayforday 于 2012-10-14 01:18 编辑 ]
2012-10-14 01:05
lybh24
Rank: 8Rank: 8
等 级:贵宾
威 望:19
帖 子:120
专家分:701
注 册:2012-9-8
收藏
得分:4 
方法很多,用委托,用多线程。。。都可以实现:
窗体1:
程序代码:
using System;
using System.Collections.Generic;
using using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using System.Threading;//线程引用

namespace FrmToNext
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        string pass;//接收txtbox的值
        private void button1_Click(object sender, EventArgs e)
        {
            pass=this.textBox1.Text.Trim();
            Thread th = new Thread(new ThreadStart(GotoFrm2));//创建线程
            th.SetApartmentState( ApartmentState.STA);//设置线程单元状态为STA (注:这句是后来加上的,刚开始忘记会有THreadStateException异常了)
            th.Start();//开启线程

        }

        public void GotoFrm2()
        {
              Application.Exit();//关闭当前
              Application.Run(new Form2(pass));//打开窗体2
        }
    }
}
窗体2:
程序代码:
using System;
using System.Collections.Generic;
using using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace FrmToNext
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        public Form2(string getstr) //getstr就是form1传给form2的值
        {
            InitializeComponent();

            this.label1.Text = getstr;
        }
    }
}



[ 本帖最后由 lybh24 于 2012-10-15 10:10 编辑 ]

新群:273209143
2012-10-14 21:13
smart0721
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:106
专家分:468
注 册:2012-2-10
收藏
得分:4 
嗯,这个可以通过很多办法实现!其实ASP跟C#的窗体间传值原理是一样的,编程这东西不能死学,要理清思路,灵活应用。就像你这个问题,如楼上几位所说,方法很多,可以通过窗体属性传递,也可以通过公共类或全局变量,也可以用委托,构造函数,多线程等等……!当你各种方法都会了,你再碰到这种问题的话,就不是想怎么能实现,而是想要用哪种方法更好。效率更高!具体问题具体分析。现在你刚学,你要简单易懂就可以定义公共属性来实现
如你要主窗体传值给子窗体:(如有些软件需要登录,登录后主界面会显示你的账号或用户名一样)
现在登录窗口界面定义两个TextBox用于账号和密码的输入,还有一个Button按钮用于登录
登录触发时间代码:
程序代码:
 private void button1_Click(object sender, EventArgs e)
        {
           // 省略 判断账号和密码是否正确?          
            frmMain fm = new frmMain();
            this.Hide();               //隐藏当前窗体
            fm.Username = this.txtUserName.Text; //把用户名传值给要显示的这窗体
            fm.Show();
        }
在窗体在定义一个属性,用于记录用户名
程序代码:
public partial class frmMain : Form
    {
        public string Username = string.Empty;//就是加这一句,定义并初始化
        public frmMain()
        {
            InitializeComponent();
        }
         private void frmMain_Load(object sender, EventArgs e)//加载该窗体时把Username用label或Textbox控件显示出来
        {
            this.label1.Text = Username;
        }
    }
其他方法也很简单,你自己网上找找看看!




[ 本帖最后由 smart0721 于 2012-10-19 17:26 编辑 ]
2012-10-19 17:15
xb594328980
Rank: 1
等 级:新手上路
帖 子:3
专家分:4
注 册:2011-4-5
收藏
得分:4 
人家要的是关闭  不是影藏
2012-10-21 16:48
fily1314
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:166
专家分:1190
注 册:2007-7-18
收藏
得分:4 
最简单的就是用一个类定义一些静态变量,在窗口1关闭事件中给这些变量赋值,
在窗口2中就可以直接使用那些变量了
2012-10-21 22:36
迪拜axq
Rank: 2
等 级:论坛游民
帖 子:29
专家分:11
注 册:2012-9-21
收藏
得分:0 
回复 4楼 lybh24
新手 学习了 厉害
2015-07-17 13:38
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2546
专家分:9359
注 册:2007-11-3
收藏
得分:0 
你完全可以把实例放到全局栈里嘛 不要的时候 随时在栈里清除

出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2015-07-17 16:12
快速回复:如何关闭窗口1后,把窗口1的某个值传给窗口2?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020233 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved