C#:如何调整用户在DataGridView中输入的值?

C#:如何调整用户在DataGridView中输入的值?,c#,data-binding,datagridview,C#,Data Binding,Datagridview,我有一个数据绑定的DataGridView。数据源是一个类型化数据集,其表包含两列DateTime(BeginTimeStamp和EndTimeStamp)。我使用类型化数据集的Update命令将数据读写到SQLServer2005数据库 用户必须在两列中的每一列中输入一个日期,我使用CellValidating和RowValidating事件强制执行该日期。但是,我还需要确保以下两条规则适用: BeginDate列的时间值必须始终为00:00:00 EndDate列的时间值必须始终为23:59

我有一个数据绑定的DataGridView。数据源是一个类型化数据集,其表包含两列
DateTime
BeginTimeStamp
EndTimeStamp
)。我使用类型化数据集的
Update
命令将数据读写到SQLServer2005数据库

用户必须在两列中的每一列中输入一个日期,我使用
CellValidating
RowValidating
事件强制执行该日期。但是,我还需要确保以下两条规则适用:

  • BeginDate
    列的时间值必须始终为00:00:00
  • EndDate
    列的时间值必须始终为23:59:59(或11:59:59 pm,如果您愿意)
  • 由于我不希望用户一直输入23:59:59,因此我希望以某种方式根据1更改用户的输入。二,。在我的代码中

    我将在哪里以及如何做到这一点

    编辑

    对不起,我不清楚。用户可以输入任何日期部分,但是,
    BeginTimeStamp
    的时间部分固定在午夜,而
    EndTimeStamp
    的时间部分固定在23:59:59

    例如:

    用户以
    BeginTimeStamp
    的形式输入2009/01/01 01:00:00pm。我的申请应该改为2009/01/01 00:00:00


    用户以
    EndTimeStamp
    的形式输入2009/01/31 01:00:00pm。我的应用程序应将其更改为2009/01/31 23:59:59。

    我不确定是否遵循,用户必须输入两个日期的值,但它们始终相同?如果我理解正确,为什么不在数据库中设置默认值,那么当您读入数据集时,这些值将已经存在了

    我不确定是否遵循,用户必须为这两个日期输入一个值,但它们总是相同的?如果我理解正确,为什么不在数据库中设置默认值,那么当您读入数据集时,这些值就已经存在了

    您可以在其他验证之后,将以下行添加到您的
    CellValidating
    方法中

    DateTime newValue = oldValue.Date;
    


    在其他验证之后,您可以将以下行添加到
    cellvaligning
    方法中

    DateTime newValue = oldValue.Date;
    


    我只是将DateTime显示为日期,并在幕后添加时间

    这可能是在用户输入数据时,也可能是在您将数据写入数据库时

    如果选择前者,请查看DataGridView.CellEndEdit事件


    请参阅Noam的答案,以获得适当设置时间的代码。

    我只需将DateTime显示为日期,并在幕后添加时间

    这可能是在用户输入数据时,也可能是在您将数据写入数据库时

    如果选择前者,请查看DataGridView.CellEndEdit事件


    请参阅Noam的答案,以获取适当设置时间的代码。

    您也可以在属性设置器中执行验证:

     public DateTime BeginTimeStamp
     {
         get { return _dateTime; }
         set
         {
             // force the time to whatever you want
             _dateTime = value.Date;
         }
     }
    

    您还可以在属性设置器内执行验证:

     public DateTime BeginTimeStamp
     {
         get { return _dateTime; }
         set
         {
             // force the time to whatever you want
             _dateTime = value.Date;
         }
     }
    

    我认为OP的意思是DateTime的时间部分必须相同,但日期可以是任何东西。如果我造成任何混乱,对不起-我编辑了我的帖子以使事情更清楚。我认为OP的意思是DateTime的时间部分必须相同,但是日期可以是任何事情。如果我造成了任何混乱,我很抱歉——我已经编辑了我的帖子以使事情更清楚。