フォーカス喪失後、DisplayFormatが適用されないことがある
対象製品
InputMan for .NET 4.0J Windows Forms Edition
発生環境
動作環境と同じ
状況
修正済み
詳細
この問題はDateコントロールとNumberコントロールで発生します。
Leaveイベントでメッセージボックスを表示させると、このメッセージボックスを閉じて次のタブオーダーのコントロールにフォーカスが移った後も、DisplayFormatの書式が適用されません。
Leaveイベントでメッセージボックスを表示させると、このメッセージボックスを閉じて次のタブオーダーのコントロールにフォーカスが移った後も、DisplayFormatの書式が適用されません。
回避方法
この問題を修正した修正版(v4.0.2008.0415)をご利用ください。こちらからダウンロードできます。
またはLeaveイベント内で以下のコード例のようにFormatプロパティを再設定すると、この問題を回避することができます。
[Visual Basic]
(Dateコントロールの場合)
Private Sub Date1_Leave( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Date1.Leave
MessageBox.Show( "Pause" )
Dim f As DateFormat = Date1.Format
Date1.Format = Nothing
Date1.Format = f
End Sub
(Numberコントロールの場合)
Private Sub Number1_Leave( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Number1.Leave
MessageBox.Show( "Pause" )
Dim f As NumberFormat = Number1.Format
Number1.Format = Nothing
Number1.Format = f
End Sub
[C#]
(Dateコントロールの場合)
private void date1_Leave( object sender, EventArgs e )
{
MessageBox.Show( "Pause" );
DateFormat f = date1.Format;
date1.Format = null;
date1.Format = f;
}
(Numberコントロールの場合)
private void number1_Leave( object sender, EventArgs e )
{
MessageBox.Show( "Pause" );
NumberFormat f = number1.Format;
number1.Format = null;
number1.Format = f;
}
またはLeaveイベント内で以下のコード例のようにFormatプロパティを再設定すると、この問題を回避することができます。
[Visual Basic]
(Dateコントロールの場合)
Private Sub Date1_Leave( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Date1.Leave
MessageBox.Show( "Pause" )
Dim f As DateFormat = Date1.Format
Date1.Format = Nothing
Date1.Format = f
End Sub
(Numberコントロールの場合)
Private Sub Number1_Leave( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Number1.Leave
MessageBox.Show( "Pause" )
Dim f As NumberFormat = Number1.Format
Number1.Format = Nothing
Number1.Format = f
End Sub
[C#]
(Dateコントロールの場合)
private void date1_Leave( object sender, EventArgs e )
{
MessageBox.Show( "Pause" );
DateFormat f = date1.Format;
date1.Format = null;
date1.Format = f;
}
(Numberコントロールの場合)
private void number1_Leave( object sender, EventArgs e )
{
MessageBox.Show( "Pause" );
NumberFormat f = number1.Format;
number1.Format = null;
number1.Format = f;
}
キーワード
INMN06542
この文書は、以前は次のバグレポートIDで公開されていました : 7204