private void dataview_CellValidated(object sender, DataGridViewCellEventArgs e) { if (dataview.Rows[e.RowIndex].IsNewRow) { return; } DataGridViewCell cell = GetCell(e.RowIndex, e.ColumnIndex); if (cell.ErrorText == string.Empty)//表示驗證沒有通過。 { string columnName = GetColumnName(cell); if (columnName == "StartTime" || columnName == "EndTime") { if ((cell.Value + string.Empty) != string.Empty) { PaddingMethod method = (columnName == "StartTime" ? PaddingMethod.First : PaddingMethod.Last); DateTime?dt = DateTimeHelper.ParseGregorian(cell.Value + string.Empty, method); cell.Value = dt.Value.ToString(Consts.TimeFormat); } } } ShowDirtyStatus(); }
/// <summary> /// 將日期當作是「西元」年處理。 /// </summary> /// <param name="dtString">日期字串。 </param> /// <param name="method">如果日期缺少的欄位用何種方式補上。</param> /// <returns></returns> public static DateTime? ParseGregorian(string dtString, PaddingMethod method) { PatternMatcher matcher = new PatternMatcher(dtString.Trim()); if (!matcher.IsSuccess) return null; else { string assembly; if (method == PaddingMethod.None) { foreach (Group each in matcher.EachGroup()) if (!each.Success) return null; assembly = matcher.GetReassemblyString(); } else { int year, month, day, hour, minute, second; DateTimePaddingInfo padding = new DateTimePaddingInfo(method); ExtractInfo(matcher, padding, out year, out month, out day, out hour, out minute, out second); assembly = year + "/" + month + "/" + day + " " + hour + ":" + minute + ":" + second; } DateTime result; if (DateTime.TryParse(assembly, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out result)) return result; else return null; } }
//private void txtStartTime_Validated(object sender, EventArgs e) //{ // if (txtStartTime.Text != string.Empty) // FormatDateTime(txtStartTime, PaddingMethod.First); // CurrentItem.StartTime = txtStartTime.Text; // ShowDirtyStatus(); //} //private void txtEndTime_Validated(object sender, EventArgs e) //{ // if (txtEndTime.Text != string.Empty) // FormatDateTime(txtEndTime, PaddingMethod.Last); // CurrentItem.EndTime = txtEndTime.Text; // ShowDirtyStatus(); //} //private void cboScoreSource_SelectedIndexChanged(object sender, EventArgs e) //{ // if (CurrentItem == null) return; // if (cboScoreSource.SelectedIndex == 0) // { // CurrentItem.AllowUpload = "是"; // txtStartTime.Enabled = true; // txtEndTime.Enabled = true; // } // else // { // CurrentItem.AllowUpload = "否"; // txtStartTime.Enabled = false; // txtEndTime.Enabled = false; // } // ShowDirtyStatus(); //} private void FormatDateTime(TextBoxX textbox, PaddingMethod method) { if (_errors.GetError(textbox) == string.Empty) { DateTime?dt = DateTimeHelper.ParseGregorian(textbox.Text, method); textbox.Text = dt.Value.ToString(Consts.TimeFormat); } }
private DateTime?GetDateTimeNullable(string txt, PaddingMethod method) { if (string.IsNullOrEmpty(txt)) { return(null); } return(DateTimeHelper.ParseGregorian(txt, method)); }
//private void txtStartTime_Validating(object sender, CancelEventArgs e) //{ // ValidTextTime(txtStartTime, PaddingMethod.First); //} //private void txtEndTime_Validating(object sender, CancelEventArgs e) //{ // ValidTextTime(txtEndTime, PaddingMethod.Last); //} private void ValidTextTime(TextBoxX textbox, PaddingMethod method) { if (textbox.Text == string.Empty) { _errors.SetError(textbox, ""); } else { DateTime?objStart = DateTimeHelper.ParseGregorian(textbox.Text, method); if (!objStart.HasValue) { _errors.SetError(textbox, "您必須輸入合法的日期格式。"); } else { _errors.SetError(textbox, ""); } } }
public DateTimePaddingInfo(PaddingMethod method) { _method = method; }
/// <summary> /// 將日期當作是「民國」年處理。 /// </summary> /// <param name="dtString">日期字串。</param> /// <param name="method">如果日期中缺少的欄位用何種方式補上。</param> public static DateTime? ParseTaiwan(string dtString, PaddingMethod method) { throw new NotImplementedException("未實作。"); }