作成日: 2018/09/13 最終更新日: 2019/04/10
文書種別
不具合
状況
修正済み
詳細
DateTime型の単一セルあるいはマージされたセルにおいて、セルの高さが既定の高さより高い場合、編集時に表示される既定のエディター(標準のDateTimePickerから継承)の高さがセルの高さに一致せず、常に固定された高さとなります。
そのため、セルの右側に表示される「▼」マークのうち既定の高さを超えた部分(例:2行マージしている場合で、2行目に相当する部分)をクリックしてもカレンダーがプルダウン表示されず、マージが解除されたように見えるといった現象が発生します。
これは、エディターの基底クラスであるDateTimePickerにおいて、コントロールの高さが固定されていることに起因します。
そのため、セルの右側に表示される「▼」マークのうち既定の高さを超えた部分(例:2行マージしている場合で、2行目に相当する部分)をクリックしてもカレンダーがプルダウン表示されず、マージが解除されたように見えるといった現象が発生します。
これは、エディターの基底クラスであるDateTimePickerにおいて、コントロールの高さが固定されていることに起因します。
回避方法
この問題は2019J v1(4.0.20191.362)で修正されました。
※修正版を適用しない場合の回避方法は以下の通りです。
CalendarView for WinFormsのC1DateEditコントロールをカスタムエディタとして使用し、StartEditイベント内でDateTime型セルのEditorに設定します。
◎サンプルコード(VB)
◎サンプルコード(C#)
※修正版を適用しない場合の回避方法は以下の通りです。
CalendarView for WinFormsのC1DateEditコントロールをカスタムエディタとして使用し、StartEditイベント内でDateTime型セルのEditorに設定します。
◎サンプルコード(VB)
Private Sub flex_StartEdit(sender As Object, e As RowColEventArgs) Handles flex.StartEdit
If flex.Cols(e.Col).DataType = GetType(DateTime) Then
Dim editor As C1DateEdit = New C1DateEdit()
editor.ShowUpDownButtons = False
flex.Editor = editor
End If
End Sub
If flex.Cols(e.Col).DataType = GetType(DateTime) Then
Dim editor As C1DateEdit = New C1DateEdit()
editor.ShowUpDownButtons = False
flex.Editor = editor
End If
End Sub
◎サンプルコード(C#)
private void flex_StartEdit(object sender, RowColEventArgs e)
{
if (flex.Cols[e.Col].DataType == typeof(DateTime))
{
var editor = new C1DateEdit();
editor.ShowUpDownButtons = false;
flex.Editor = editor;
}
}
{
if (flex.Cols[e.Col].DataType == typeof(DateTime))
{
var editor = new C1DateEdit();
editor.ShowUpDownButtons = false;
flex.Editor = editor;
}
}
旧文書番号
83230