如何refesh短时间字符串(C#DateTime.Now)?

Rya*_*yan 4 c# datetime winforms

我正在使用Windows窗体制作记事本程序,并且日期/时间功能有问题:

我的系统时间和日期格式(短)是hh:mm tt M/d/yyyy.当我在记事本中按F5(日期/时间功能)时,它会添加一个时间字符串,格式如上所示.然后我将系统时间和日期格式更改为HH:mm dd-MMM-YY并在记事本中再次按F5,它会添加另一个时间字符串,其格式为我已更改.

但是使用我的记事本项目(我使用DateTime.Now.ToShortTimeString()DateTime.Now.ToShortDateString()执行此功能),如果我希望格式在我的程序中生效,我必须再次启动程序,否则它将使用第一种格式,无论我按F5多少次.

所以我想问一下是否有办法解决这个问题.

我正在使用VS 2013.

Kub*_*tek 7

非常好的问题.日期根据当前用户文化信息进行格式化,但信息由.NET缓存.您需要做的是强制.NET通过CultureInfo.ClearCachedData事先调用方法来清除缓存.

更多信息请访问:https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.clearcacheddata(v = vs.80).aspx

还请注意,每次用户想要插入日期和时间时清除缓存都会在某种程度上忽略缓存(好的,我夸大了一点).当系统告诉您其配置已更改时,您只能清除缓存.你通过听SystemEvents.UserPreferenceChanged事件来做到这一点.回答更多信息:如何在用户更改系统文化时接收事件