• WinForm中窗体间的数据传递(一)


    窗体间的数据传递的几种方法:

    1.通过子窗体的Tag属性

    2.借助第三方的一个静态变量

    3.通过父窗体的Tag属性

    局限性:必须得有一个窗体已经关闭,数据才能传递过去

    那如果,我们想在都不关闭任何窗体的情况下进行数据传递,该如何操作?

    在我的另外一篇博文中(WinForm中窗体间的数据传递(二))可以借助向外引发事件来解决这个问题

    例子截图如下:

    当用户点击子窗口的“添加”按钮的时候的代码:

    private void button1_Click(object sender, EventArgs e)
            {
                this.DialogResult = DialogResult.OK;
                //创建一个Info对象
                User info = new User();
                //将数据保存到Info对象中
                info.UserName = textBox3.Text;
                info.PassWord = textBox4.Text;
                //问题:如何将info对象中的信息传递给主窗口
                //方案一:将对象info保存到子窗口的Tag属性中,则从父窗口中可以通过实例化的子窗口对象拿到info对象信息
                //this.Tag = info;
                //方案二:将对象info保存到一个静态变量中
                //第三方.user = info;
                //方案三:将对象info保存到父窗口的Tag属性中
                MainFrm mainfrm = this.Owner as MainFrm;
                mainfrm.Tag = info;
            }

    将用户点击主窗口中的“添加信息”的代码:

    private void 添加用户ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                FrmUser userDialog = new FrmUser();
                if (userDialog.ShowDialog() == DialogResult.OK)
                //if (userDialog.ShowDialog(this) == DialogResult.OK)
                {
                    //方案一:通过子窗口的Tag属性进行窗体间的数据传递
                    User user=userDialog.Tag as User;
                    //方案二:借助第三方的一个静态属性进行数据传递
                    User user = 第三方.user;
                    //方案三:通过父窗口的Tag属性进行窗体间的数据传递,注意传递一个this参数给userDialog.ShowDialog()
                    User user = this.Tag as User;
                    MessageBox.Show("用户名:"+user.UserName+"\r\n密码:" + user.PassWord);
                }
            }

     其中,得特别注意第三种方案,当将要传递的信息保存到“主窗口”的Tag中的时候,在显示“子窗口”的时候需要通过ShowDialog传递一个参数:this,用以设置当前窗体为子窗体的Owner

    原创文章,转载请注明出处:http://www.cnblogs.com/hongfei/archive/2012/12/17/2822137.html

     

  • 相关阅读:
    Cesium案例解析(二)——ImageryLayers影像图层
    Cesium案例解析(一)——HelloWorld
    WebGL简易教程(十四):阴影
    WebGL简易教程(十三):帧缓存对象(离屏渲染)
    关于GDAL读写Shp乱码的问题总结
    WebGL简易教程(十二):包围球与投影
    GDAL集成对KML文件的支持
    WebGL简易教程(十一):纹理
    WebGL简易教程(十):光照
    WebGL简易教程(九):综合实例:地形的绘制
  • 原文地址:https://www.cnblogs.com/hongfei/p/2822137.html
Copyright © 2020-2023  润新知