SPREAD for WPF 4.0J - GcSpreadGrid
書式設定(日付時刻型セル)
MESCIUS SPREAD for WPF 4.0J > 開発者ガイド > セル型 > 日付時刻型セル > 書式設定(日付時刻型セル)

日付時刻型セルは、入力用および表示用の書式をそれぞれ設定できます。入力書式はセルが編集状態のときに適用され、表示書式はセルが非編集状態のときに適用されます。日付時刻型セルの入力書式は、書式に合わないデータが入力されないようにユーザーの入力を制限します。

書式設定

(左)入力書式の例                 (右)表示書式の例

書式設定にはキーワードを使用する方法と、フィールド オブジェクトを使用する方法があります。入力および表示書式の設定方法について、それぞれ説明します。

入力書式

キーワードによる入力書式の設定

FieldSet プロパティに入力書式を表す DateFieldSet を設定します。DateFieldSet クラスのコンストラクタでキーワードを使用して書式を設定します。使用できるキーワードは次のとおりです。

キーワード 説明
g 年号の頭文字をアルファベットで表示(M、T、S、H、R)
gg 年号の頭文字を漢字で表示(明、大、昭、平、令)
ggg 年号の正式名称を漢字で表示(明治、大正、昭和、平成、令和)
ee 和暦年を2桁で表示(先頭に0を付ける)
yy 年を2桁で表示(先頭に0を付ける)
yyyy 年を4桁で表示(先頭に0を付ける)
MM 月を2桁の数字で表示(先頭に0を付ける)
MMM 月を省略形で表示
MMMM 月を正式名称で表示
dd 日を2桁で表示(先頭に0を付ける)
t 12 時間制で時刻を表示するときに午前
tt 12 時間制で時刻を表示するときに午前
hh 時を 12 時間制で表示(先頭に0を付ける)
HH 時を 24 時間制で表示(先頭に0を付ける)
mm 分を表示(先頭に0を付ける)
ss 秒を表示(先頭に0を付ける)
\ キーワードをリテラル文字として表示

次のサンプルコードは日付時刻型セルの入力書式をキーワードで設定します。

C#
コードのコピー
DateTimeCellType dt = new DateTimeCellType();
dt.FieldSet = new DateFieldSet("yyyy年MM月dd日");
gcSpreadGrid1[0, 0].CellType = dt;
Visual Basic
コードのコピー
Dim dt As New DateTimeCellType()
dt.FieldSet = New DateFieldSet("yyyy年MM月dd日")
GcSpreadGrid1(0, 0).CellType = dt

フィールド オブジェクトによる入力書式の設定

FieldSet プロパティで入力書式を表す DateFieldSet を取得し Fields プロパティでフィールド オブジェクトのコレクションを参照します。フィールド オブジェクトを追加するにはコレクションの Add メソッドを使用します。入力書式で使用できるフィールドクラスは次のとおりです。これらのクラスを使用してフィールド オブジェクトを作成します。

フィールド クラス 説明
DateEraField 年号入力フィールド。主な設定は次のとおりです。
AllowDropDownOpen 年号をドロップダウン リストで表示できるようにするかどうか
AutoOpenDropDown フィールドにフォーカスが移動したとき、自動的に年号のドロップダウン リストを表示するかどうか
Pattern 年号の表示形式
DateEraYearField 和暦入力フィールド
DateYearField 年入力フィールド。主な設定は次のとおりです。
TwoDigitYearMax 西暦を2桁で入力する場合の最後の年
YearDigit 西暦の表示桁数
DateMonthField 月入力フィールド。主な設定は次のとおりです。
AllowDropDownOpen 月をドロップダウン リストで表示できるようにするかどうか
AutoOpenDropDown 月にフォーカスが移動したとき、自動的に月のドロップダウン リストを表示するかどうか
Pattern 月の表示形式
DateDayField 日入力フィールド
DateHourField 24時間制時刻入力フィールド。主な設定は次のとおりです。
MidnightAs24 午前0時を 24 時と表示するかどうか
DateShortHourField 12時間制時刻入力フィールド。主な設定は次のとおりです。
Hour12Mode 0時を 12 時と表示するかどうか
DateMinuteField 分入力フィールド
DateSecondField 秒入力フィールド
DateAmPmField 午前/午後入力フィールド。主な設定は次のとおりです。
AMDesignator 午前を表す文字列
PMDesignator 午後を表す文字列
Pattern 午前/午後の表示形式
DateLiteralField リテラル文字フィールド。主な設定は次のとおりです。
Text リテラル文字として表示する文字列

入力フィールドは、上の表の設定に加えて PromptChar プロパティで未入力のときに表示するプロンプト文字を、SpinIncrement プロパティでスピン機能で増減する値を設定できます。

次のサンプルコードは日付時刻型セルの入力書式をフィールド オブジェクトで設定します。

C#
コードのコピー
DateTimeCellType dt = new DateTimeCellType();
dt.FieldSet = new DateFieldSet();
dt.FieldSet.Fields.Add(new DateYearField() { YearDigit=YearDigitType.FourDigitYear});
dt.FieldSet.Fields.Add(new DateLiteralField() { Text="年"});
dt.FieldSet.Fields.Add(new DateMonthField() { Pattern=MonthPattern.Number});
dt.FieldSet.Fields.Add(new DateLiteralField() { Text = "月" });
dt.FieldSet.Fields.Add(new DateDayField());
dt.FieldSet.Fields.Add(new DateLiteralField() { Text = "日" });
gcSpreadGrid1[0, 0].CellType = dt;
Visual Basic
コードのコピー
Dim dt As New DateTimeCellType()
dt.FieldSet = New DateFieldSet()
dt.FieldSet.Fields.Add(New DateYearField() With {.YearDigit = YearDigitType.FourDigitYear})
dt.FieldSet.Fields.Add(New DateLiteralField() With {.Text = "年"})
dt.FieldSet.Fields.Add(New DateMonthField() With {.Pattern = MonthPattern.Number})
dt.FieldSet.Fields.Add(New DateLiteralField() With {.Text = "月"})
dt.FieldSet.Fields.Add(New DateDayField())
dt.FieldSet.Fields.Add(New DateLiteralField() With {.Text = "日"})
GcSpreadGrid1(0, 0).CellType = dt

表示書式

キーワードによる表示書式の設定

DisplayFieldSet プロパティに表示書式を表す DateDisplayFieldSet を設定します。DateDisplayFieldSet クラスのコンストラクタでキーワードを使用して書式を設定します。使用できるキーワードは次のとおりです。

キーワード 説明
A 紀元後を表す"A.D.(Anno Domini)"を表示
g 年号の頭文字をアルファベットで表示(M、T、S、H、R)
gg 年号の頭文字を漢字で表示(明、大、昭、平、令)
ggg 年号の正式名称を漢字で表示(明治、大正、昭和、平成、令和)
e 和暦年を2桁で表示(先頭に0を付けない)
ee 和暦年を2桁で表示(先頭に0を付ける)
E 和暦年を2桁で表示し開始年を元と表示(先頭に0を付けない)(例)令和元年
EE 和暦年を2桁で表示し開始年を元と表示(先頭に0を付ける)(例)令和元年
y 年を2桁で表示(先頭に0を付けない)
yy 年を2桁で表示(先頭に0を付ける)
yyy 年を4桁で表示(先頭に0を付けない)
yyyy 年を4桁で表示(先頭に0を付ける)
M 月を2桁の数字で表示(先頭に0を付けない)
MM 月を2桁の数字で表示(先頭に0を付ける)
MMM 月を省略形で表示
MMMM 月を正式名称で表示
d 日を2桁で表示(先頭に0を付けない)
dd 日を2桁で表示(先頭に0を付ける)
ddd 曜日を省略形で表示
dddd 曜日を正規名称で表示
t 12 時間制で時刻を表示するときに午前
tt 12 時間制で時刻を表示するときに午前
h 時を 12 時間制で表示(先頭に0を付けない)
hh 時を 12 時間制で表示(先頭に0を付ける)
H 時を 24 時間制で表示(先頭に0を付けない)
HH 時を 24 時間制で表示(先頭に0を付ける)
m 分を表示(先頭に0を付けない)
mm 分を表示(先頭に0を付ける)
s 秒を表示(先頭に0を付けない)
ss 秒を表示(先頭に0を付ける)
\ キーワードをリテラル文字として表示

次のサンプルコードは日付時刻型セルの表示書式をキーワードで設定します。

C#
コードのコピー
DateTimeCellType dt = new DateTimeCellType();
dt.DisplayFieldSet = new DateDisplayFieldSet("gggEE年MM月dd日");
gcSpreadGrid1[0, 0].CellType = dt;
Visual Basic
コードのコピー
Dim dt As New DateTimeCellType()
dt.DisplayFieldSet = New DateFieldSet("gggEE年MM月dd日")
GcSpreadGrid1(0, 0).CellType = dt

フィールド オブジェクトによる表示書式の設定

DisplayFieldSet プロパティで表示書式を表す DateDisplayFieldSet を取得し DisplayFields プロパティでフィールドオブジェクトのコレクションを参照します。フィールドオブジェクトを追加するにはコレクションの Add メソッドを使用します。表示書式で使用できるフィールドクラスは次のとおりです。これらのクラスを使用してフィールド オブジェクトを作成します。

フィールド クラス 説明
DateADDisplayField 紀元後を表す A.D. を表示
DateEraDisplayField 年号表示フィールド。主な設定は次のとおりです。
Pattern 年号の表示形式
DateEraYearDisplayField 和暦表示フィールド。主な設定は次のとおりです。
ShowLeadingZero 先頭に0を付けるかどうか
ShowTraditionalFirstYear 開始年を元年と表示するかどうか
DateYearDisplayField 年表示フィールド。主な設定は次のとおりです。
ShowLeadingZero 先頭に0を付けるかどうか
YearDigit 西暦の表示桁数
DateMonthDisplayField 月表示フィールド。主な設定は次のとおりです。
Pattern 月の表示形式
ShowLeadingZero 先頭に0を付けるかどうか
DateDayDisplayField 日表示フィールド。主な設定は次のとおりです。
ShowLeadingZero 先頭に0を付けるかどうか
DateWeekdayDisplayField 曜日表示フィールド。主な設定は次のとおりです。
Pattern 曜日の表示形式
DateHourDisplayField 24時間制時刻表示フィールド。主な設定は次のとおりです。
MidnightAs24 午前0時を 24 時と表示するかどうか
ShowLeadingZero 先頭に0を付けるかどうか
DateShortHourDisplayField 12時間制時刻表示フィールド。主な設定は次のとおりです。
Hour12Mode 0時を 12 時と表示するかどうか
ShowLeadingZero 先頭に0を付けるかどうか
DateMinuteDisplayField 分表示フィールド。主な設定は次のとおりです。
ShowLeadingZero 先頭に0を付けるかどうか
DateSecondDisplayField 秒表示フィールド。主な設定は次のとおりです。
ShowLeadingZero 先頭に0を付けるかどうか
DateAmPmDisplayField 午前/午後表示フィールド。主な設定は次のとおりです。
AMDesignator 午前を表す文字列
PMDesignator 午後を表す文字列
Pattern 午前/午後の表示形式
DateSystemFormatDisplayField システム書式表示フィールド。Pattern プロパティにシステムで定義された書式指定子を設定します。設定可能な書式指定子は次のとおりです。
システム定義の書式指定子
キーワード 説明
d 短い形式の日付(例:2009/10/01)
D 長い形式の日付(例:2009年10月1日)
t 短い形式の時刻(例:10:30)
T 長い形式の時刻(例:10:30:00)
f 長い形式の日付と短い形式の時刻(例:2009年10月1日 10:30)
F 長い形式の日付と長い形式の時刻(例:2009年10月1日10:30:00)
g 短い形式の日付と短い形式の時刻(例:2009/10/01 10:30)
G 短い形式の日付と長い形式の時刻(例:2009/10/01 10:30:00)
M または m 月日の表示(例:10月1日)
O または o ラウンドトリップ形式(例:2009-10-01T10:30:00.0000000+09:00)
R または r RFC1123 の形式(例:Thu, 01 Oct 2009 10:30:00 GMT)
S ISO 8601 準拠の形式(例:2009-10-01T10:30:00)
u ユニバーサル形式(例:2009-10-01 10:30:00Z)
U 世界協定時刻(例:2009年10月1日1:30:00)
Y または y 年月の表示(例:2009年10月)
DateLiteralDisplayField リテラル文字フィールド。主な設定は次のとおりです。
Text リテラル文字として表示する文字列

表示フィールドは、上の表の設定に加えて PromptChar プロパティで未入力のときに表示するプロンプト文字を設定できます。

次のサンプルコードは日付時刻型セルの表示書式をフィールド オブジェクトで設定します。

C#
コードのコピー
DateTimeCellType dt = new DateTimeCellType();
dt.DisplayFieldSet = new DateDisplayFieldSet();
dt.DisplayFieldSet.DisplayFields.Add(new DateEraDisplayField() { Pattern = EraPattern.EraName });
dt.DisplayFieldSet.DisplayFields.Add(new DateEraYearDisplayField() { ShowTraditionalFirstYear = true });
dt.DisplayFieldSet.DisplayFields.Add(new DateLiteralDisplayField() { Text = "年" });
dt.DisplayFieldSet.DisplayFields.Add(new DateMonthDisplayField() { Pattern = MonthPattern.Number });
dt.DisplayFieldSet.DisplayFields.Add(new DateLiteralDisplayField() { Text = "月" });
dt.DisplayFieldSet.DisplayFields.Add(new DateDayDisplayField());
dt.DisplayFieldSet.DisplayFields.Add(new DateLiteralDisplayField() { Text = "日" });
Visual Basic
コードのコピー
Dim dt As New DateTimeCellType()
dt.DisplayFieldSet = New DateDisplayFieldSet()
dt.DisplayFieldSet.DisplayFields.Add(New DateEraDisplayField() With {.Pattern = EraPattern.EraName})
dt.DisplayFieldSet.DisplayFields.Add(New DateEraYearDisplayField() With {.ShowTraditionalFirstYear = True})
dt.DisplayFieldSet.DisplayFields.Add(New DateLiteralDisplayField() With {.Text = "年"})
dt.DisplayFieldSet.DisplayFields.Add(New DateMonthDisplayField() With {.Pattern = MonthPattern.Number})
dt.DisplayFieldSet.DisplayFields.Add(New DateLiteralDisplayField() With {.Text = "月"})
dt.DisplayFieldSet.DisplayFields.Add(New DateDayDisplayField())
dt.DisplayFieldSet.DisplayFields.Add(New DateLiteralDisplayField() With {.Text = "日"})
GcSpreadGrid1(0, 0).CellType = dt
関連トピック