TextBox 中的 Winforms C# 日期更改月份和日期

Winforms C# Date in TextBox changes month and day

我有一个 c# winforms 应用程序,它数据绑定到 table,具有多个日期。客户要求可以使用文本框输入日期。但是,我无法让它正常工作。问题是当我离开文本框时,日期和月份会更改位置。因此,当我键入 9-12-1950 时,它将显示为 12-09-1950。当我键入 09-12-1950 时也是如此。在内部,日期存储为 yyyy-MM-dd。使用 dd-MM-yyyy 格式启用数据绑定。我使用验证事件 t0 检查日期是否有效,例如:

  if (DateTime.TryParseExact(tbDate.Text, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateValue))
                tbDate.Text = String.Format("{0:dd-MM-yyyy}", dateValue);

当我调试时,我发现 tbDate 的文本值仍然是正确的格式,例如在我的例子中是 9-12-1950。我还看到从 TryParseExact 返回的 dateValue 包含相同的日期,但格式为 MM/dd/yyyy.

将日期保存到数据库设置了onValidation。我在这里错过了什么?

[更新] 也许我的解释不够清楚。日期以 DateTime 类型(不是 varchar)的 yyyy-MM-dd 格式存储在 SQL Db 中。在我的表格上,我想将其显示和编辑为 dd-MM-yyyy(还有一些其他格式,例如:"dd/MM/yyyy"、"dd/M/yyyy"、"d/M/yyyy"、"d/MM/yyyy"、"dd/MM/yy"、"dd/M/yy"、"d/M/yy"、"d/MM/yy"、"dd-MM-yyyy"、"dd-M-yyyy"、"d-M-yyyy"、"d-MM-yyyy"、"dd-MM-yy", "dd-M-yy", "d-M-yy", "d-MM-yy".

输入正常,但一旦我离开文本框,日期和月份就会改变位置。我想我错过了什么。就是不知道。

感觉有点傻,问题出在本地系统设置上,设置为M/d/yyyy。我将其更改为解决问题的本地文化 dd-MM-yyyy。