次の変更を加える必要があることがわかりました。
CalendarCell のコンストラクターで、形式を 24 時間に変更します。
public CalendarCell()
: base()
{
// Use the 24hr format.
//this.Style.Format = "d";
this.Style.Format = "HH:mm";
}
編集コントロールのコンストラクターで、カスタム形式を使用するように指定します。ShowUpDown
また、セルを編集するときにカレンダー アイコンを表示しないように、自由に true を設定しました。
public CalendarEditingControl()
{
//this.Format = DateTimePickerFormat.Short;
this.Format = DateTimePickerFormat.Custom;
this.CustomFormat = "HH:mm";
this.ShowUpDown = true;
}
EditingControlFormattedValue を変更します。これは実際には必要ないように見えますが、そのままにしておくのは気分が悪くなります。
// Implements the IDataGridViewEditingControl.EditingControlFormattedValue
// property.
public object EditingControlFormattedValue
{
get
{
//return this.Value.ToShortDateString();
return this.Value.ToString("HH:mm");
}
set
{
if (value is String)
{
try
{
// This will throw an exception of the string is
// null, empty, or not in the format of a date.
this.Value = DateTime.Parse((String)value);
}
catch
{
// In the case of an exception, just use the
// default value so we're not left with a null
// value.
this.Value = DateTime.Now;
}
}
}
}