社区
C#
帖子详情
winform 控件同步问题
liulingyun3c
2012-03-07 04:54:15
在父子窗体里分别有个一模一样控件,怎样做到两个控件同步,比如改变子窗体控件里的某个属性值,父窗体里的属性值也跟着变化
...全文
196
10
打赏
收藏
winform 控件同步问题
在父子窗体里分别有个一模一样控件,怎样做到两个控件同步,比如改变子窗体控件里的某个属性值,父窗体里的属性值也跟着变化
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
白色的海
2012-03-08
打赏
举报
回复
用绑定好是好,就是一些复杂的数据(比如,控件的颜色,某个节点是否展开等等)你没办法绑定的,用代码实现无非就是罗嗦点,当相对的,你能获得最大的灵活性,这个要看你的需求了,
我这边再提供一个思路,供大家讨论:
Form1是主窗体,Form2是子窗体,在Form2上修改了数据之后通过事件通知Form1,Fomr1在响应该通知事件的处理函数内实现同步(当然了,先要绑定Fomr2的通知函数)。
通知事件:Form2.DataChanged
响应: Form1_OnDataChanged(Dictinary<string,object> datas){}
参数用字典来做,你想同步什么就同步什么。
这种方法在接口上就把工作量全统一掉了,你的封装性就不会被破坏,工作量就在生成通知的数据和响应工作。
stonespace
2012-03-07
打赏
举报
回复
这个实现很麻烦,用代码来同步,修改一个控件的属性,也同时修改另一个控件属性就可以,只是麻烦,
Castiel丶Luo
2012-03-07
打赏
举报
回复
将父窗体控件作为参数传给子窗体
子窗体控件改变时 改变参数对象
liulingyun3c
2012-03-07
打赏
举报
回复
楼上的,能否提供一些具体代码
wanghui0380
2012-03-07
打赏
举报
回复
绑定到相同的数据源上即可
也就是可以把父窗口的数据源当参数传递给子窗口。只要数据源本身具有InoifyPropryChanged接口,那么他将自动触发同步更新过程
实际上微软在msdn上有专门章节说明这个问题
如何:使用 BindingSource 组件跨窗体共享绑定数据
http://msdn.microsoft.com/zh-cn/library/ms404320.aspx
白色的海
2012-03-07
打赏
举报
回复
[Quote=引用 3 楼 liulingyun3c 的回复:]
你这个只是针对属性不多的情况下,我有个控件有很多属性状态需要维护,如果每个属性这样设的很麻烦。比如树控件我可以改背景色还有控件大小变化,还有节点位置变化等等
[/Quote]
参考我在4楼的回复
白色的海
2012-03-07
打赏
举报
回复
[Quote=引用 1 楼 ck11926375 的回复:]
父窗体
Form2 f2 = new Form2();
f2.Show(this);
子窗体
((Form1)this.Owner).Controls["textBox1"].Text = this.textBox1.Text;
[/Quote]
同意:
不过该方法破坏了封装的特性。
如果Form1上控件的名字改了,或者是需要同步的控件很多的话,这个代码乱的很。
做一个更新方法全部封装起来,更新方法的参数用一个字典表,字典的关键字可以自己约定为一个参数名,值就是数据。
这种封装复用性很好。
liulingyun3c
2012-03-07
打赏
举报
回复
你这个只是针对属性不多的情况下,我有个控件有很多属性状态需要维护,如果每个属性这样设的很麻烦。比如树控件我可以改背景色还有控件大小变化,还有节点位置变化等等
白色的海
2012-03-07
打赏
举报
回复
思路:
1.子窗体的构造函数中增加一个参数,参数类型为窗体类。
2.为主窗体作一个update的方法,用该方法的参数付给主窗体的某个控件。
2.在主窗体内生成子窗体的时候,将自己作为子窗体构造构造参数传给子窗体,也就是说子窗体持有以为对主窗体的引用。
3.在子窗体的某个控件上修改了数据后,调用内部引用的主窗体的update方法,并将数据传入。
如果用wpf的话则更简单了:
主窗体和子窗体都双向绑定到一个静态类的某个字段上,该字段是依赖属性,这种方式下,只要在子窗体内修改了数据,就可以立即反应到主窗体上。
ck11926375
2012-03-07
打赏
举报
回复
父窗体
Form2 f2 = new Form2();
f2.Show(this);
子窗体
((Form1)this.Owner).Controls["textBox1"].Text = this.textBox1.Text;
C#
Winform
控件
随窗体缩放
用C#在
Winform
上编写
控件
随窗体自动缩放程序,博客上有转载原文出处,但没有提供原程序,现整理如上给初学者用,以上
WinForm
Cron表达式生成器
最近使用Quartz.net做了几个
同步
任务,感觉非常好。表达式设置也是非常灵活,但是新入手发现对表达式不熟,每次都要使用在线生成器。 于是写了一个
winform
版本的生成器练练手,也加强对表达式的理解。 当然很...
WinForm
中实体类批量修改
在
WinForm
项目开发中习惯于对于集合数据的批量修改,再一次性提交更新
同步
到数据库。这里我们就必须实现对对象的改变的跟踪记录,我们实现对象的改变跟踪有许多方式,大致我尝试了两种方式:1:对象强制实现接口,...
winform
导入xml利用treeview
控件
对其增删改查源码
.net vs2010开发
winform
导入xml利用treeview
控件
对其增删改查源码 已全部实现功能
同步
操作xml
基于
WinForm
的多线程多进度条程序
基于
Winform
的开发,主要用于熟悉多线程
同步
技术,在多线程下让多个进度条按照不用的速度运行。
C#
110,536
社区成员
642,578
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章