1. 背景分析:
最近,在使用多个基于winform控件的自定义控件时,需要统一datetimepicker控件的值,即设置一个控件的时间值后,当切换到其他自定义控件时,时间自动统一为先前已设置的时间值。
多个自定义控件分布在tabcontrol中,不同功能模块切换时,切换tabcontrol的标签。
2.问题:
系统启动后,在第一个自定义控件中,设置datetimepicker的value值,当切换至第二个界面时,先更新已设置好的时间值,然后,切换tabcontrol的页面值,发现设置值无效。
3.原因分析:
系统启动后,当tabcontrol页面未切换显示时,该页面的load函数未执行;执行修改时间后,当切换至该显示界面时,load函数中对控件进行了时间设置,此时变更了已设置好的时间值,从而导致先前设置好的时间无效。
4.解决方法:
综上分析,需要调整设置顺序,且将已设置好的时间值临时存储,防止在界面启动时,修改已设置好的时间值。
//第一步,存储已设置的时间变量,因为全局变量可能会在界面启动中修改
DateTime dttemp = ClsSysPara.DataTimeQiBao;
//第二步,切换界面,此时出发页面加载load函数
this.leeTabControlGongNeng.SelectedIndex = 3;
//第三步,将起报时间恢复至全局变量
ClsSysPara.DataTimeQiBao = dttemp;
//第四步,更新界面时间
ctrlRegion_EC_Ocean.UpdateQiBaoTime();//更新起报时间