我在C ++ .net工作。我有一个自定义控件,显示dataBase的内容,其中包含一个bindingsource。我在控件中使用标签通过带有以下代码的bindingsource将text属性绑定到数据集中的数据:
mycontrol->Controls[i]->DataBindings->Add((gcnew System::Windows::Forms::Binding(L"Text",
this->bindingSourceRelRev_Data, mycolumn,true, System::Windows::Forms::DataSourceUpdateMode::OnValidation,
nullptr, L"t")));
请注意,代码是一个循环的摘录,迭代所有控件,因此控件[i],它将是标签控件,变量mycolumn,它将是数据集的列被绑定到。除了我还没有找到改变方法的不需要的行为之外,它的工作正常。 软件在世界不同地区运行,但记录必须在当地时间。数据库将本地时间的时间存储为DateTime值,但dataBinding将其解释为UTC,并在应用了时区差异的标签中显示时间。例如,如果数据是24/06/2012 16:40,它将在4小时差异时区显示24/06/2012 22:40。 我需要它来显示存储的值,而不需要更改。
我可以想到不同的方式,但非优雅: - 捕获标签的文本更新事件并取消更改... - 将日期存储为DB中的String ... - 手动填写标签...... -...
如果我在没有格式化的情况下绑定,它将不会更改值,但是我在标签上有原始日期时间字符串...
拜托,我在装订中遗失的任何魔法,以便它不会认为它必须改变时区吗?
非常感谢您提前! 亚当
答案 0 :(得分:0)
我对DateTime格式提供程序的文档感到困惑,该文档声明它序列化了日期。也许我误解了它......实际上并没有。
非常感谢你!