我正在使用Windows窗体制作记事本程序,并且日期/时间功能出现问题:
我的系统时间和日期格式(短)是hh:mm tt M / d / yyyy。当我在记事本中按F5(日期/时间功能)时,它会添加一个时间字符串,格式如上所示。然后我将系统时间和日期格式更改为HH:mm dd-MMM-YY并在记事本中再次按F5,它会添加另一个时间字符串,其格式为我已更改。
但是使用我的记事本项目(我使用DateTime.Now.ToShortTimeString()
和DateTime.Now.ToShortDateString()
来执行此功能),如果我希望格式在我的程序中生效,我必须再次启动程序,否则它将会无论我按F5多少次,都使用第一种格式。
所以我想问一下是否有办法解决这个问题。
我正在使用VS 2013.
答案 0 :(得分:7)
非常好的问题。日期根据当前用户文化信息进行格式化,但信息由.NET缓存。您需要做的是强制.NET通过事先调用CultureInfo.ClearCachedData
方法来清除缓存。
另请注意,每次用户想要插入日期和时间时清除缓存。时间在某种程度上错过了缓存的点(好吧,我夸张了一点)。当系统告诉您其配置已更改时,您只能清除缓存。您可以通过收听SystemEvents.UserPreferenceChanged
事件来完成此操作。更多信息请点击此处:How to receive event when user changes system's culture
答案 1 :(得分:1)
请参阅SystemEvents课程,UserPreferenceChang * events。