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

cmengzhongren 2014-02-26 10:42:52
c# 桌面程序,有多个界面,如何将第一个界面填写的内容传递到其他界面,并且返回第一个界面修改内容后,其他界面的数据也跟着变化
...全文
244 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
  • 打赏
  • 举报
回复
事件更新 可以百度 观察者模式
基于51单片机,实现对直流电机的调速、测速以及正反转控制。项目包含完整的仿真文件、源程序、原理图和PCB设计文件,适合学习和实践51单片机在电机控制方面的应用。 功能特点 调速控制:通过按键调整PWM占空比,实现电机的速度调节。 测速功能:采用霍尔传感器非接触式测速,实显示电机转速。 正反转控制:通过按键切换电机的正转和反转状态。 LCD显示:使用LCD1602液晶显示屏,显示当前的转速和PWM占空比。 硬件组成 主控制器:STC89C51/52单片机(与AT89S51/52、AT89C51/52通用)。 测速传感器:霍尔传感器,用于非接触式测速。 显示模块:LCD1602液晶显示屏,显示转速和占空比。 电机驱动:采用双H桥电路,控制电机的正反转和调速。 软件设计 编程语言:C语言。 开发环境:Keil uVision。 仿真工具:Proteus。 使用说明 液晶屏显示: 第一行显示电机转速(单位:转/分)。 第二行显示PWM占空比(0~100%)。 按键功能: 1键:加速键,短按占空比加1,长按连续加。 2键:减速键,短按占空比减1,长按连续减。 3键:反转切换键,按下后电机反转。 4键:正转切换键,按下后电机正转。 5键:开始暂停键,按一下开始,再按一下暂停。 注意事项 磁铁和霍尔元件的距离应保持在2mm左右,过近可能会在电机转动碰到霍尔元件,过远则可能导致霍尔元件无法检测到磁铁。 资源文件 仿真文件:Proteus仿真文件,用于模拟电机控制系统的运行。 源程序:Keil uVision项目文件,包含完整的C语言源代码。 原理图:电路设计原理图,详细展示了各模块的连接方式。 PCB设计:PCB布局文件,可用于实际电路板的制作。

111,119

社区成员

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

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

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