DateコントロールのShowLiteralsプロパティがPreDisplay/PostDisplayの場合に例外が発生する場合がある
対象製品
InputMan for .NET 4.0J Windows Forms Edition
発生環境
動作環境と同じ
状況
回避方法あり
詳細
DateコントロールのShowLiteralsプロパティがPreDisplay/PostDisplayの場合に、DeleteキーやBackspaceキーなどを押下した場合に例外が発生する場合があります。
回避方法
ShowLiteralsプロパティがAlwasの場合には例外が発生しません。特定のキーを押下されたタイミングでShowLiteralsプロパティを切り替えることで回避します。
[VB]
' 回避策用の変数を宣言します。
Private showLiteralsValue As GrapeCity.Win.Input.ShowLiterals
Private isClipboardCut As Boolean = False
Public Sub New()
InitializeComponent()
' 日付コントロールを初期化します。
InitializeGcControls()
End Sub
Private Sub InitializeGcControls()
' 日付コントロールの設定をします。
Date1.ShowLiterals = GrapeCity.Win.Input.ShowLiterals.PreDisplay
showLiteralsValue = Date1.ShowLiterals
End Sub
Private Sub Date1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Date1.KeyDown
' Ctrl+x、Delete、Backspaceのいずれかの場合、フラグをONにしShowLiteralsプロパティをAlwaysに変更します。
If (e.Control And e.KeyCode = Keys.X) Or e.KeyCode = Keys.Delete Or e.KeyCode = Keys.Back Then
isClipboardCut = True
Date1.ShowLiterals = GrapeCity.Win.Input.ShowLiterals.Always
End If
End Sub
Private Sub Date1_KeyUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Date1.KeyUp
' フラグがONの場合、ShowLiteralsプロパティを元に戻します。
If isClipboardCut Then
isClipboardCut = False
Date1.ShowLiterals = showLiteralsValue
End If
[C#]
// 回避策用の変数を宣言します。
private GrapeCity.Win.Input.ShowLiterals showLiteralsValue;
private bool isClipboardCut = false;
public Form1()
{
InitializeComponent();
// 日付コントロールを初期化します。
InitializeGcControls();
}
private void InitializeGcControls()
{
// 日付コントロールの設定をします。
date1.ShowLiterals = GrapeCity.Win.Input.ShowLiterals.PreDisplay;
showLiteralsValue = date1.ShowLiterals;
date1.KeyDown += new KeyEventHandler(date1_KeyDown);
date1.KeyUp += new KeyEventHandler(date1_KeyUp);
}
private void date1_KeyDown(object sender, KeyEventArgs e)
{
// Ctrl+x、Delete、Backspaceのいずれかの場合、フラグをONにしShowLiteralsプロパティをAlwaysに変更します。
if ((e.Control && e.KeyCode == Keys.X) || e.KeyCode==Keys.Delete || e.KeyCode==Keys.Back)
{
isClipboardCut = true;
date1.ShowLiterals = GrapeCity.Win.Input.ShowLiterals.Always;
}
}
private void date1_KeyUp(object sender, KeyEventArgs e)
{
// フラグがONの場合、ShowLiteralsプロパティを元に戻します。
if (isClipboardCut)
{
isClipboardCut = false;
date1.ShowLiterals = showLiteralsValue;
}
}
[VB]
' 回避策用の変数を宣言します。
Private showLiteralsValue As GrapeCity.Win.Input.ShowLiterals
Private isClipboardCut As Boolean = False
Public Sub New()
InitializeComponent()
' 日付コントロールを初期化します。
InitializeGcControls()
End Sub
Private Sub InitializeGcControls()
' 日付コントロールの設定をします。
Date1.ShowLiterals = GrapeCity.Win.Input.ShowLiterals.PreDisplay
showLiteralsValue = Date1.ShowLiterals
End Sub
Private Sub Date1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Date1.KeyDown
' Ctrl+x、Delete、Backspaceのいずれかの場合、フラグをONにしShowLiteralsプロパティをAlwaysに変更します。
If (e.Control And e.KeyCode = Keys.X) Or e.KeyCode = Keys.Delete Or e.KeyCode = Keys.Back Then
isClipboardCut = True
Date1.ShowLiterals = GrapeCity.Win.Input.ShowLiterals.Always
End If
End Sub
Private Sub Date1_KeyUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Date1.KeyUp
' フラグがONの場合、ShowLiteralsプロパティを元に戻します。
If isClipboardCut Then
isClipboardCut = False
Date1.ShowLiterals = showLiteralsValue
End If
[C#]
// 回避策用の変数を宣言します。
private GrapeCity.Win.Input.ShowLiterals showLiteralsValue;
private bool isClipboardCut = false;
public Form1()
{
InitializeComponent();
// 日付コントロールを初期化します。
InitializeGcControls();
}
private void InitializeGcControls()
{
// 日付コントロールの設定をします。
date1.ShowLiterals = GrapeCity.Win.Input.ShowLiterals.PreDisplay;
showLiteralsValue = date1.ShowLiterals;
date1.KeyDown += new KeyEventHandler(date1_KeyDown);
date1.KeyUp += new KeyEventHandler(date1_KeyUp);
}
private void date1_KeyDown(object sender, KeyEventArgs e)
{
// Ctrl+x、Delete、Backspaceのいずれかの場合、フラグをONにしShowLiteralsプロパティをAlwaysに変更します。
if ((e.Control && e.KeyCode == Keys.X) || e.KeyCode==Keys.Delete || e.KeyCode==Keys.Back)
{
isClipboardCut = true;
date1.ShowLiterals = GrapeCity.Win.Input.ShowLiterals.Always;
}
}
private void date1_KeyUp(object sender, KeyEventArgs e)
{
// フラグがONの場合、ShowLiteralsプロパティを元に戻します。
if (isClipboardCut)
{
isClipboardCut = false;
date1.ShowLiterals = showLiteralsValue;
}
}
キーワード
INMN07285
この文書は、以前は次のバグレポートIDで公開されていました : 7898