多个界面如何共享数据并在每次展示时显示最新的

cmengzhongren 2014-02-26 10:42:52
c# 桌面程序,有多个界面,如何将第一个界面填写的内容传递到其他界面,并且返回第一个界面修改内容后,其他界面的数据也跟着变化
...全文
221 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
加一个静态事件,当其中一个界面数据改变时触发,大致是 void SharedDataChanged(object 界面sender, DataEventArgs e) 新数据放在DataEventArgs实例中传入 事件处理中做一个foreach(所有注册了该事件的界面) 界面.绑定(e.Data);
心云意水 2014-02-26
  • 打赏
  • 举报
回复
第一个界面public一个变量,然后作为其他窗口的父窗口,那么其他窗口就能访问这个变量,当打开窗口的时候,就读取变量然后更新UI。 如果窗体是同时存在的,那么就直接修改好了
龙宜坡 2014-02-26
  • 打赏
  • 举报
回复
其实只需要使用WinForm控件的DataBindings属性就可以搞定! 以下简单例子,测试通过。 1.Form1(程序主窗体) 2.Form2(子窗体) 3.MyClass(一个自定义类,为控件绑定值使用) 代码如下: Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Guog.Demo
{
    public partial class Form1 : Form
    {
        private MyClass m_myClass = new MyClass();
        private Form2 m_form2 = null;
        public Form1()
        {
            InitializeComponent();
            //txt1为界面上的TextBox控件
            txt1.DataBindings.Add("Text", m_myClass, "Name");
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (m_form2 == null)
            {
                m_form2 = new Form2(m_myClass);
            }

            if (!m_form2.Visible)
            {
                m_form2.Show();
            }
        }
    }
}
Form2.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Guog.Demo
{
    public partial class Form2 : Form
    {
        private MyClass m_class = null;
        //构造函数传参数
        public Form2(MyClass myClass)
        {
            InitializeComponent();
            m_class = myClass;
            //txt1为界面上的TextBox控件
            txt1.DataBindings.Add("Text", myClass, "Name");
        }
        //为了窗体不关闭
        protected override void OnClosing(CancelEventArgs e)
        {
            e.Cancel = true;
            this.Hide();
            base.OnClosing(e);
        }
    }
}
MyClass.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Guog.Demo
{
    public class MyClass
    {
        public string Name { get; set; }
    }
}
没有然后了...
threenewbee 2014-02-26
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/360140208
灬浪子灬 2014-02-26
  • 打赏
  • 举报
回复
引用 楼主 cmengzhongren 的回复:
c# 桌面程序,有多个界面,如何将第一个界面填写的内容传递到其他界面,并且返回第一个界面修改内容后,其他界面的数据也跟着变化
其它界面里写一个public的公开方法,更一个完一个窗体调用公开方法去更新
欢乐的小猪 2014-02-26
  • 打赏
  • 举报
回复
事件更新 可以百度 观察者模式

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧