Datagridview DateTime 格式不使用系统区域设置

Posted

技术标签:

【中文标题】Datagridview DateTime 格式不使用系统区域设置【英文标题】:Datagridview DateTime Format not using System Region settings 【发布时间】:2010-06-02 02:35:40 【问题描述】:

我有一个数据网格视图,它连接到我的主窗体上的绑定源。 bindingsource 中的列和数据成员之一是 DateTime 对象。当 datagridview 显示此项时,它不使用 Window 的默认区域设置来显示日期时间。

奇怪的是,我可以访问同一个 DateTime 对象并将其打印到文本框,甚至可以将它传递给具有另一个 datagridview 和绑定源的另一个表单,它实际上可以正确显示在该表中。

那么,为什么我的主窗体上的 datagridview 在将 DateTime 对象转换为字符串时不使用区域日期/时间设置?

我已经检查过 datagridview 没有应用特殊格式,所以我没有什么想法可以检查了。

你们知道是否有任何超级秘密的方法可以让 datagridview 遵循系统区域格式规则吗?

另外,由于我非常怀疑我对这个 datagridview 与我的应用程序中的其他人所做的不同,下一个潜在的问题区域可能是应用程序负载:也许因为这在应用程序加载时出现,所以它没有得到与其他数据网格视图相同的cultureUI 设置?

更新 我尝试在数据网格视图中添加另一列并将其连接到相同的数据属性(日期时间),我得到了相同的结果。因此,关于整个 datagridview 或它的创建方式如何阻止“ToString”使用默认区域设置。

有什么帮助吗?

【问题讨论】:

【参考方案1】:

在设计上,在 DataGridView 的Edit Columns 对话框中:

    搜索属性DefaultCellStyle,然后打开此对话框; 搜索属性Format并选择日期格式; 选择您喜欢的格式。

【讨论】:

如果我这样做,更改肯定会生效,这很好,但这不是我想要的结果。我不想应用任何特定格式,我希望它采用 Window 的默认格式。其他一切都很好,但不是这个控件。 我知道,如果我可以这么说的话,这在某种程度上是一个错误或缺乏。我曾经设置 DateTimeOnFormLoadDefaultCellStyle 属性。 或者你可以简单地在 hte getter 上格式化你绑定的 DateTime 属性,不行吗? 使用d 表示日期,它将根据区域设置以适当的格式显示。

以上是关于Datagridview DateTime 格式不使用系统区域设置的主要内容,如果未能解决你的问题,请参考以下文章

如何在 DataGridViewColumn 中使用服务器 DateTime 格式而不是系统 DateTime 格式

如果相同的 DateTime 已经在一行中,如何覆盖 dataGridView 中的一行?

在 DataGridView 中显示之前将时间戳(Datetime.ticks)从数据库转换为 Datetime 值

将 DateTime 作为 VarChar 返回以在 DataGridView 中使用

我想在DataGridView中显示数据库存的datetime类型日期,怎么转换成string类型后再显示?

DataGridView列标题