1.通过tag属性传输,tag属性是存储与空间密切相关的数据。比如登陆界面的数据传输给主界面。

子窗体                                                                        主窗体

        

定义一个类

namespace FrmLogin
{
    public class User
    {
        public string UserName { set; get; }
        public string PassWorld { set; get; }
    }
}

子窗体.cs

private void buttonLogin_Click(object sender, EventArgs e)
        {
            User user = new User();
            user.UserName = this.textBoxName.Text.Trim();
            user.PassWorld = this.textBoxPassWorld.Text;

            this.Tag = user;

            this.DialogResult = DialogResult.OK;
        }

父(主)窗体.cs

private void FormMain_Load(object sender, EventArgs e)
   {
            FormLogin frm = new FormLogin();
            if (frm.ShowDialog() == DialogResult.OK)
            {
                User user = frm.Tag as User;

                this.Text += string.Format("--欢迎您:{0}", user.UserName);

            }
            else
            {
                frm.Close();
            }
 }

2.创建一个类,相当于创建了全局共享的静态变量,然后大家都来访问这个静态变量。

全局类.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace FrmLogin
{
    public class ConText
    {
        public static User UserLogin = null;
    }
}

子窗体.cs

private void buttonLogin_Click(object sender, EventArgs e)
        {
            User user = new User();
            user.UserName = this.textBoxName.Text.Trim();
            user.PassWorld = this.textBoxPassWorld.Text;

            //this.Tag = user;

            ConText.UserLogin = user;
            this.DialogResult = DialogResult.OK;
        }

主窗体.cs

        private void FormMain_Load(object sender, EventArgs e)
        {
            FormLogin frm = new FormLogin();
            if (frm.ShowDialog() == DialogResult.OK)
            {
               // User user = frm.Tag as User;
                User user = ConText.UserLogin;

                this.Text += string.Format("--欢迎您:{0}", user.UserName);

            }
            else
            {
                frm.Close();
            }
        }

3.利用子窗体tag属性

子窗体.cs

 private void buttonLogin_Click(object sender, EventArgs e)
        {
            User user = new User();
            user.UserName = this.textBoxName.Text.Trim();
            user.PassWorld = this.textBoxPassWorld.Text;

            FormLogin main = this.Owner as FormLogin;
            if (main == null)
            {
                MessageBox.Show("LOGIN窗体没有Owner,请检查代码!!");
            }
            main.Tag = user;
            this.DialogResult = DialogResult.OK;
        }

父窗体.cs

 private void FormMain_Load(object sender, EventArgs e)
        {
            FormLogin frm = new FormLogin();
            if (frm.ShowDialog(this) == DialogResult.OK)//这儿一定要加this
            {

                User user = this.Tag as User;
                this.Text += string.Format("--欢迎您:{0}", user.UserName);

            }
            else
            {
                frm.Close();
            }
        }

Winfrom窗体间传值的更多相关文章

  1. Pyqt 窗体间传值

    窗体间传值网上有好多方法,比如新建文件,先将子类窗体的数据传到文件中,父窗体读取文件.  Signal&Slot机制进行传值 等等 在这里,我们就举个采用apply方法:Signal& ...

  2. C# winform窗体间传值(使用委托或事件)

    窗体间传值 今天得空,刚好看到网上好多人再找winform窗体间传值的问题,由于昨天项目的优化的感觉不错,就写了个C# winform窗体间传值的demo,希望能给需要的人的带来帮助: 工程的源代码地 ...

  3. 【转】WinForm窗体显示和窗体间传值

    以前对WinForm窗体显示和窗体间传值了解不是很清楚 最近做了一些WinForm项目,把用到的相关知识整理如下 A.WinForm中窗体显示 显示窗体可以有以下2种方法: Form.ShowDial ...

  4. C#利用事件与委托进行窗体间传值简单小例子

    本篇博客是利用C#委托与事件进行窗体间传值的简单小例子 委托与事件的详细解释大家可以参照张子阳的博客: http://www.tracefact.net/CSharp-Programming/Dele ...

  5. QT窗体间传值总结之Signal&Slot

    在写程序时,难免会碰到多窗体之间进行传值的问题.依照自己的理解,我把多窗体传值的可以使用的方法归纳如下: 1.使用QT中的Signal&Slot机制进行传值: 2.使用全局变量: 3.使用pu ...

  6. C#窗体间传值的简便方法/工具

    一.问题:窗体间传值必须需要窗体之间有联系,具体有如下方式 窗体间传值涉及到窗体A必须拥有窗体B,这样才可以实现A-B之间传值 窗体A与窗体B在窗体/实例C中,A-B可互相通讯 其他方式,不细讨论,复 ...

  7. winform 窗体间传值

    WinForm 两窗体之间传值实例 2010-12-27 22:10:11|  分类: 学业|举报|字号 订阅     下载LOFTER我的照片书  |     窗体Form1和Form2 Form2 ...

  8. ASP.NET 窗体间传值实现方法详解

    假设ParentForm.aspx 页面上有TextBox1文本框和Open按钮点击Open按钮弹出SubForm.aspx,SubForm.aspx页面上有TextBox1文本框和Close按钮点击 ...

  9. (C#)WinForm窗体间传值

      1.通过构造函数 特点:传值是单向的(不可以互相传值),实现简单 实现代码如下: 在窗体Form2中 int value1; string value2; public Form2 ( int v ...

随机推荐

  1. POJ3347:Kadj Squares——题解

    http://poj.org/problem?id=3347 题目大意:给定一些正方形的边长,让他们尽可能向左以45°角排列(不能互相重合),求在上面看只能看到哪几个正方形. ———————————— ...

  2. POJ3690:Constellations——题解

    http://poj.org/problem?id=3690 题目大意:给一个图和几个子图,判断有多少种子图在原图出现过. —————————————————————— 二维哈希即可,操作看代码,我觉 ...

  3. POJ3666:Making the Grade——题解

    http://poj.org/problem?id=3666 题目大意:给n个数,每次操作可使一个数+1或-1,求最小操作数使得序列不下降或不上升. —————————————————————— 思路 ...

  4. [zhuan]java发送http的get、post请求

    http://www.cnblogs.com/zhuawang/archive/2012/12/08/2809380.html Http请求类 package wzh.Http; import jav ...

  5. 探讨JavaScript的事件冒泡

    JavaSciprt事件中有两个很重要的特性:事件冒泡以及目标元素. 当一个元素上的事件被触发的时候,比如说鼠标点击了一个按钮,同样的事件将会在那个元素的所有祖先元素中被触发.这一过程被称为事件冒泡: ...

  6. STL之五:set/multiset用法详解

    集合 转载于:http://blog.csdn.net/longshengguoji/article/details/8546286 使用set或multiset之前,必须加入头文件<set&g ...

  7. bzoj 2457 [BeiJing2011]双端队列 模拟+贪心

    [BeiJing2011]双端队列 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 457  Solved: 203[Submit][Status][D ...

  8. POJ 2976 二分

    Dropping tests Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12515   Accepted: 4387 D ...

  9. notify()与notifyAll()

    notify() :随机唤醒一个线程. notifyAll():唤醒等待某个锁的所有任务. 在技术上,可能会有多个任务在所创建的任务上处于wait()状态,调用notifyAll()比只调用notif ...

  10. 游戏编程入门之Bomb Catcher游戏

    首先是代码: MyDirectX.h: #pragma once //header file #define WIN32_EXTRA_LEAN #define DIRECTINPUT_VERSION ...