日付時刻コントロールでは様々な視覚的な補助機能を提供しています。この章ではそれらの機能について解説します。
AlternateText プロパティを使用すれば、コントロールが未入力のときや和暦表示できない日付が設定された場合に代わりに表示するテキストを文字列として設定することができます。
(図) 代替テキストを表示した日付時刻コントロール
AlternateText プロパティは、DateAlternateText オブジェクトを参照し、DateAlternateText クラスのプロパティを使用して以下の代替テキストを設定できます。
プロパティ | 代替テキストの内容 |
---|---|
DisplayNull | コントロールにフォーカスがなく、未入力のときの代替テキスト |
DisplayEmptyEra | コントロールにフォーカスがなく、その値が和暦表示できないときの代替テキスト |
Null | コントロールにフォーカスがあり、未入力のときの代替テキスト |
EmptyEra | コントロールにフォーカスがあり、その値が和暦表示できないときの代替テキスト |
|
これらのプロパティはAlternateText クラスを参照し、次の2つを設定することができます。
次のサンプルコードは、代替テキストを設定する例です。
' フォーカスがないときの代替テキスト GcDateTime1.AlternateText.DisplayNull.Text = "生年月日を入力してください" GcDateTime1.AlternateText.DisplayNull.ForeColor = System.Drawing.Color.LightSeaGreen GcDateTime1.AlternateText.DisplayEmptyEra.Text = "和暦表示ができません" GcDateTime1.AlternateText.DisplayEmptyEra.ForeColor = System.Drawing.Color.Gray ' フォーカスがあるときの代替テキスト GcDateTime1.AlternateText.Null.Text = "和暦で入力してください" GcDateTime1.AlternateText.Null.ForeColor = System.Drawing.Color.LightPink GcDateTime1.AlternateText.EmptyEra.Text = "和暦表示ができません" GcDateTime1.AlternateText.EmptyEra.ForeColor = System.Drawing.Color.Red
// フォーカスがないときの代替テキスト gcDateTime1.AlternateText.DisplayNull.Text = "生年月日を入力してください"; gcDateTime1.AlternateText.DisplayNull.ForeColor = System.Drawing.Color.LightSeaGreen; gcDateTime1.AlternateText.DisplayEmptyEra.Text = "和暦表示ができません"; gcDateTime1.AlternateText.DisplayEmptyEra.ForeColor = System.Drawing.Color.Gray; // フォーカスがあるときの代替テキスト gcDateTime1.AlternateText.Null.Text = "和暦で入力してください"; gcDateTime1.AlternateText.Null.ForeColor = System.Drawing.Color.LightPink; gcDateTime1.AlternateText.EmptyEra.Text = "和暦表示ができません"; gcDateTime1.AlternateText.EmptyEra.ForeColor = System.Drawing.Color.Red;
ShowRecommendedValue プロパティを使用すると、日付時刻コントロールで値が未入力のとき、入力候補となる値をグレー表示することができます。
入力候補として表示された日付の値は、表示された候補値のまま適用するか、フィールドの一部もしくは全ての値を変更して入力値として適用することができます。入力候補として表示される値は、非表示フィールドのデフォルト値としても使用される、RecommendedValue プロパティで設定します。
候補として表示された値を確定するには、ショートカットコンポーネントのショートカットキーとして定義されている[Ctrl]+[Enter]キーを押下します。ApplyRecommendedValue メソッドを使って入力値として適用することもできます。
(図) 入力候補値を変更せずに値を確定
(図) 入力候補値から日付だけ変更して値を確定
HighlightText プロパティを使用すると、フォーカスを受け取ったときのテキストの選択状態を設定することができます。HighlightText.Allの場合は、コントロールのすべてのテキストが選択状態になります。HighlightText.Fieldの場合は、コントロール内のフィールドの1つを選択状態にすることができます。
HighlightTextの値 | キャレットまたはフィールドの状態 |
---|---|
None | キャレットは、DefaultActiveField プロパティで指定したフィールドの最初に位置します。DefaultActiveField プロパティが既定値のときは、キャレットの位置は、SelectionStart プロパティとSelectionLength プロパティの設定で決まります。 |
Field | DefaultActiveField プロパティで指定したフィールドが選択状態になります。DefaultActiveField プロパティが既定値のときは、SelectionStart プロパティで設定された文字以降の最初のフィールドが選択状態になります。SelectionStart以降がすべてリテラル文字の場合は、前のフィールドが選択状態になります。 |
All | DefaultActiveField プロパティの設定に関わらず、コントロール内のすべての内容が選択状態になります。 |
コントロールからフォーカスが移動した後もコントロールのハイライト表示を保持するには、HideSelection プロパティを使用します。コントロールの一部分のみ選択状態にするには、SelectionStart プロパティとSelectionLength プロパティを組み合わせて使用します。
次のサンプルコードは、コントロールがフォーカスを受け取った時にコントロール内の最初の文字列から3文字を選択する例です。
Private Sub GcDateTime1_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles GcDateTime1.Enter GcDateTime1.SelectionStart = 0 GcDateTime1.SelectionLength = 3 End Sub
private void gcDateTime1_Enter(object sender, EventArgs e) { gcDateTime1.SelectionStart = 0; gcDateTime1.SelectionLength = 3; }
Enter イベント内でのSelectionStartとSelectionLengthの各プロパティを使ってテキスト選択した場合は、これらのプロパティの設定がHighlightText プロパティの設定よりも優先されます。 |
PlaceHolderプロパティを使用することで、テキストボックスなどの入力エリア内にラベルを表示できる「フローティングラベル」を設定できます。コントロールが未入力の場合、このラベルはプレースホルダーとして機能します。また、テキスト入力に応じてラベルは縮小され、コントロール内の上部に移動します。
AlternateTextプロパティが設定されている場合には、コントロールが未入力であってもフローティングラベルは上部に表示されます。 |