【问题标题】:How to show the complete DateTime value in a Datagridview cell when it is exactly midnight?恰好是午夜时,如何在 Datagridview 单元格中显示完整的 DateTime 值?
【发布时间】:2015-11-05 17:12:48
【问题描述】:

我有一个 DataGridView,其中有一列包含如下所示的 DateTime 值:

问题出在所选行中:它的实际值为“10/07/2015 12:00:00 am”,但在 datagridview 中仅显示“10/07/2015”。 下一行的值为“10/07/2015 12:00:26 am”。仅当 DateTime 值的时间正好是午夜时才会出现此问题。 当我使用以下代码将该值传递给文本框(左侧)时,DateTime 值正确显示(DateTime 值在索引为 2 的列中):

text1.Text = dgView.SelectedRows[0].Cells[2].Value.ToString();

如何让我的 DataGridView 显示完整的 DateTime 值? 我不想设置 DefaultCellStyle.Format 值,因为我想以操作系统区域设置的格式显示 DateTimes(在我的情况下是 es-pe)。

我的目标是为 x86 编译的 .Net 3.5。

【问题讨论】:

    标签: c# .net winforms datetime datagridview


    【解决方案1】:

    您可以指定DefaultCellStyle.Format,但使用"standard format" 会适当地进行本地化:

    DefaultCellStyle.Format = "g"; // General date, short time pattern
    

    我不知道这会“完全”格式化午夜,但值得一试。

    【讨论】:

    • 我用“G”代替了“g”,它奏效了!并且它不会覆盖区域设置(使用 es-pe 和 es-es 测试)我会写另一个答案来展示如何从 VS 设计器中做到这一点
    • @Broken_Window,“G”和“g”是不同的格式模式。
    • @Fabio:我怀疑这只是 Broken_Window 想要更长的时间格式。
    • @JonSkeet 你说得对,我想要更长的格式。
    【解决方案2】:

    如何强制 DataGridView 在午夜准确显示小时数(这个答案来自 Jon Skeet 的答案):

    在 Visual Studio(我使用的是 VS Express 2013)中选择您的 DataGridView,转到 Properties->DefaultCellStyle,在 Format 属性中输入“G”,然后单击 Ok 或 Aceptar(我的是西班牙语):

    这解决了我的问题,它尊重操作系统的区域设置。

    我可以迷妹一点吗? OMYGOSHOMYGOSHOMYGOSHOMYGOSH Jon Skeet 自己回答了我的问题,耶! :D :D :D :D

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多